These are chat archives for scalajp/functional

19th
Mar 2015
kenji yoshida
@xuwei-k
Mar 19 2015 05:02
scala-logic 、色々細かいところ気になる部分あるけど、全部pull reqすべきか、一旦書き出すべきか
@pocketberserker
pocketberserker
@pocketberserker
Mar 19 2015 05:05
pull reqしてもらうほうが早いかもです
fail "No answer." とかしてる箇所は、Option (かscalaz.Maybe) 返すようにして実装したほうがよいかなぁ・・・。なんでfail使ってるんだこれ
kenji yoshida
@xuwei-k
Mar 19 2015 05:49
https://github.com/pocketberserker/scala-logic/blob/81cc3ffc5dd8ad6ea115b498f0d482145df2902e/src/main/scala/logic/Logic.scala#L9 MonadPlus[Id] が存在しないので、そもそもこのメソッド使い道ないよなぁ
というか、ここ https://hackage.haskell.org/package/logict-0.6.0.2/docs/Control-Monad-Logic.html 見ると、そもそも observe に MonadPlus の制約なんてないか?見てる元のコードのversionが違う?
pocketberserker
@pocketberserker
Mar 19 2015 05:53
failの代わりにemptyを使ったせいかもしれません
kenji yoshida
@xuwei-k
Mar 19 2015 05:54
なるほど?
pocketberserker
@pocketberserker
Mar 19 2015 05:54
そう考えるとOption返す実装のほうが良さそうですね
ちなみに scalaz の Monad に fail がないことには何か理由があるのです?
kenji yoshida
@xuwei-k
Mar 19 2015 05:57
普通に Monad の fail って例外なげたり、適切なものが返せない決まらない場合があるので微妙( Haskell の設計ミス? )なので、消すに決まってるだろ! くらいじゃないですかね
pocketberserker
@pocketberserker
Mar 19 2015 05:57
なるほど
kenji yoshida
@xuwei-k
Mar 19 2015 05:57
Haskell の悪いところは受け継がないというか
せめてそういうメソッド用意するにしても、Monadのサブクラスで別のものを作るべき、というか
kenji yoshida
@xuwei-k
Mar 19 2015 13:18
LogicT, Foldableが定義できるなら、Foldable1も定義できるかもしれない? (けど、あっても頻繁に使わないそう)
あと Traverse[Logic] は、デフォルトでスコープに入れたいなら、 object Logic の中じゃなく、 LogicT のコンパニオン(もしくは、コンパニオンの親)に定義したほうがいい気がする
pocketberserker
@pocketberserker
Mar 19 2015 13:20
あーなるほど。