These are chat archives for scalajp/functional

8th
May 2015
Kuchitama
@Kuchitama
May 08 2015 00:11
@xuwei-k 大学ではないですが、Scala関連で登壇者募集してます。鳥取よりは交通の便はいいですよ。 http://summit.scala-kansai.org/#speakers
Sanshiro Yoshida
@halcat0x15a
May 08 2015 05:27
Taisuke Oe
@taisukeoe
May 08 2015 05:40
次回上映会でScalaDaysの型レベルプログラミングの入門のトーク見る予定なんですが、難易度的にその次に見るのにちょうどいい型レベルプログラミング関連の動画ってなにかありませんか?
http://downloads.typesafe.com/website/presentations/ScalaDaysSF2015/T4_Barnes_Typelevel_Prog.pdf
入門トークの内容は、Boolean, Int, IntListを型レベルで実装する話です。
一応用意してるのがScala IOのこのトークなんですが、いきなりレベルが上がりすぎてるかなと上映するのに躊躇しています
http://slick.typesafe.com/talks/scalaio2014/Type-Level_Computations.pdf
eugene yokota
@eed3si9n
May 08 2015 05:44
型レベルの if 式とか色々やってるトークをこの前(別の場所で)生で見たけど面白かった - https://www.youtube.com/watch?v=cW4cmSWOSVA
Taisuke Oe
@taisukeoe
May 08 2015 05:46
早速ありがとうございます。ちょっと再生した感じ聞きやすい英語ですし、Youtubeだと字幕出るので有難いです。見てみます。
eugene yokota
@eed3si9n
May 08 2015 05:48
このバージョンのトークに入ってるか分からないけど、入れ子になったモナドを自動的に map map する方法とかも解説してた
それはおいしいのでライブラリにしちゃいなよって二次会で話してたら出てきたのが - https://github.com/wheaties/AutoLifts
これで FutureT 問題が解決するのかは知らない
Taisuke Oe
@taisukeoe
May 08 2015 06:04
お、この辺の話ですか?
http://wheaties.github.io/Presentations/Scala-Dep-Types/dependent-types.html#/6
であれば、31:30〜から入ってそうですね
eugene yokota
@eed3si9n
May 08 2015 06:07
それです
Taisuke Oe
@taisukeoe
May 08 2015 06:23
ありがとうございます。
kenji yoshida
@xuwei-k
May 08 2015 07:16
scalatvで型レベルプログラミングの動画見る必要性がよくわかってない(もっと親しみやすいテーマあれば違うものでもいいのでは、という意味で)
いや、逆に他のこととまったく方向性が違うから、一から説明されれば親しみやすいのだろうか?
kenji yoshida
@xuwei-k
May 08 2015 07:27
https://github.com/wheaties/AutoLifts これ、簡単にコード読んでみたけど、なにしてるのか、何がしたいのかよくわからない・・・。mapはまぁ合成できても、Monadはムリだろうし・・・?
Manabu Nakamura
@gakuzzzz
May 08 2015 07:29
map(_.map(f))map(_.flatMap(f)) とか書くのだるいから liftMap(f) とか liftFlatMap(f) 書けるようにしたよって話なのかなと思ってました。
kenji yoshida
@xuwei-k
May 08 2015 07:30
あーなるほど、flatMapとflatMapじゃなく、mapとflatMap合成するだけか?
Manabu Nakamura
@gakuzzzz
May 08 2015 07:31
型が一致するまでN階層掘り進めてやってくれるなら便利な所もあるかもしれない
kenji yoshida
@xuwei-k
May 08 2015 07:32
せめて、そのN階層は、type level numberで指定可能になってるべきでは
もし2階層限定なら微妙過ぎる
Taisuke Oe
@taisukeoe
May 08 2015 08:12
テーマよりトークのわかりやすさ重視で、今回の型レベルプログラミングの入門トークを選びました。
あと、知っていないと自分で選ばない
Taisuke Oe
@taisukeoe
May 08 2015 08:20
This message was deleted
Taisuke Oe
@taisukeoe
May 08 2015 08:43
どういう動画が上映会向きなのか、まだ試行錯誤中です。親しみやすい内容という意味で前回Joshの動画を選んでみたけど反応薄かったので、一から丁寧に説明する動画の方がいいんではないか、という。
kenji yoshida
@xuwei-k
May 08 2015 11:09
なるほどー。「スライドにコードが出てきたほうがわかりやすい」とかの意見はありましたね
というか、そもそも自分 Josh のやつちゃんと見てないので、なんとも言えないな
kenji yoshida
@xuwei-k
May 08 2015 11:25
@eed3si9n 色々書いたので、もし簡単に答えられそうなものがあったらその範囲で結構なので、意見や助言や感想を募集してます http://d.hatena.ne.jp/xuwei/20150508/1431082690
eugene yokota
@eed3si9n
May 08 2015 14:22
@xuwei-k いつもながら、勉強になります (w。
test-interface で(僕が)よく混乱するのが、test と言った時に、Test configuration、test task、test suite (クラスなど)、test example (メソッドやプロパティなど) などが入り混じって、全部 test と呼ばれていることですかね
eugene yokota
@eed3si9n
May 08 2015 14:28
テストフレームワーク間の抽象化っていうのもありますが、多分、並列タスクを(スケジュール化して)concurrent に実行する仕組みが既に sbt で実装されているので、これをそのまま使えば「テスト」の並列実行ができるのでは!? っていうのが元のアイディアとしてあったんじゃないかなと思います
出た当初は画期的で、「テスト」の並列実行の単位も test suite (クラス)で十分だったと思いますが、段々フレームワーク側も進化していって(だけど、sbt 側はあんまり変えれない)、sbt の仕組みと二つ理解してないといけないみたいな状況。
どっちにしろ、色々手を必要があるっていうのは最近になって何回か話題になってました。sbt/sbt#1949 とか。
kenji yoshida
@xuwei-k
May 08 2015 16:52
なるほど? 理解して使いこなせば便利な部分あるのかもしれないけど、テストライブラリ側で好き勝手やっていいわけではなく、そのあたりの並列実行の部分をまず理解しないといけないのが逆に難しい・・・
eugene yokota
@eed3si9n
May 08 2015 16:55
とりあえずスレッド関連はテストライブラリ側でやり始めるとハマりそう
kenji yoshida
@xuwei-k
May 08 2015 17:47
scalacheckさん、独自にやってた気がする・・・
scalacheckさん
  • 昔は(akkaではない)scalaのActor使って、並列を実現
  • Actor非推奨になったから、独自に生のThreadで頑張る実装に変えた
  • そのせいで個人的にとても読みにくい、デバックしにくい、で辛い
eugene yokota
@eed3si9n
May 08 2015 17:50
これで、動作が不安定になって sbt 側が「fork しないとテストが遅い」とか disられるとかありそう
kenji yoshida
@xuwei-k
May 08 2015 17:52
それぞれのテストライブラリが並列どうやってるのか調べる必要があるな・・・
そして話変わるけど、ここ、Status.Cancelの理解というか使用方法が間違ってる感 https://github.com/xuwei-k/scalaprops/blob/5321498f54/scalaprops/src/main/scala/scalaprops/ScalapropsRunner.scala#L172 (ここを通ってもテスト自体はsbtに成功として認識されてしまう?)
Errorのほうがいいか?Cancelっていつ使うものだったのか
テストが指定時間内に終わらなかったら、タイムアウトさせて失敗にさせたい、というパターン
そもそも雑でもいいから、やるべきこと色々あるので、自分でissueにしたほうがいいかな・・・
eugene yokota
@eed3si9n
May 08 2015 17:55
関連するか分からないけどこういう issue も - sbt/sbt#1890
何が壊れてて、何をこれから改善すべきかの調査だけでもかなり助かります
現在 owner がいない状態に近いので
kenji yoshida
@xuwei-k
May 08 2015 17:57
なるほど、誰も何もまだ理解出来てない状態か、そのissue 1890 ・・・
ownerがいない、とは? sbt/test-interface の?
eugene yokota
@eed3si9n
May 08 2015 17:58
一応 sbt 側でメンテはするけど、基本的にテストライブラリ作者主導な所があると思うので
kenji yoshida
@xuwei-k
May 08 2015 17:59
なるほど
eugene yokota
@eed3si9n
May 08 2015 17:59
ただ、変なメソッド入れようとしたら、それは fingerprint をちゃんと理解してね、みたいなツッコミは入れますが
scripted と partest が test-interface 準拠したいなという話は出てるので、そのへんの PR をお待ちしてます↓↓↓
kenji yoshida
@xuwei-k
May 08 2015 18:02
sbt/test-interface、
「歴史あるし、数年前に1.0として斬新したことにより、過去の経験を生かして、考えぬかれた素晴らしいインターフェイスになってるんだろう」
と勝手に期待してたけど、べつにそんなことはなくて、歴史的事情もあったり(?)、それぞれのテストライブラリ作者も完璧に理解してるわけじゃなくて、一部は混沌としてるというか、改善すべき点もそれなりにあり得る状態?
eugene yokota
@eed3si9n
May 08 2015 18:04
nescala でぼそぼとランチを食べてると Mark の横に scalatest 作者の bill が座ってきて、「あれ入れてくれないかな?」とか熱心に話してて、じゃ次の sbt で、みたいな感じで進化してったものだと思います
だけど、ある程度使えるようになったらバイナリ互換性保つ方が大切になって忘れ去られ気味
kenji yoshida
@xuwei-k
May 08 2015 18:12
そうか、scalatestの人が主導で作った感があるから、test-interfaceがなぜああいう設計になってるのか理解するには、scalatestのコード読んだほうが理解できる可能性が高いのかも
あとこの辺り?