These are chat archives for scalajp/functional

18th
Mar 2015
pocketberserker
@pocketberserker
Mar 18 2015 01:41
http://hub.darcs.net/dolio/logict/browse/Control/Monad/Logic.hs#166
これ、scalazだとMonadReader[F[_, _], S]だから実装できない…?
kenji yoshida
@xuwei-k
Mar 18 2015 01:48
よくわかってないけど、ぱっと見、不可能ではなさそうに見える
kenji yoshida
@xuwei-k
Mar 18 2015 01:58
いや、色々よくわかってない・・・
HaskellのMonadReaderはfunctional dependencies使ってるのだっけ
そしてfunctional dependenciesがよくわかってない
でもkindとしては同じじゃないんだっけ?
kenji yoshida
@xuwei-k
Mar 18 2015 02:05
ん?kind違う?
pocketberserker
@pocketberserker
Mar 18 2015 02:06
class Monad m => MonadReader r m | m -> r where
違うような?
kenji yoshida
@xuwei-k
Mar 18 2015 02:07
なんで違うんだ・・・?
functional dependenciesを表現するための苦肉の策?
pocketberserker
@pocketberserker
Mar 18 2015 02:09
undecidable instancesが関係しているのか、そういうわけではないのか…
kenji yoshida
@xuwei-k
Mar 18 2015 02:09
あと、型パラメータの順違うのか。色々ややこしい・・・
pocketberserker
@pocketberserker
Mar 18 2015 02:13
KleisliはKleisli[M[_], A, B]だからKleisli[F, ?, ?]にすればいいのはわかるのですが、LogicTはLogicT[F[_], A]だからきびしいんじゃないかなと思ってます
私がLogicTを間違えて実装している可能性もありますが…
kenji yoshida
@xuwei-k
Mar 18 2015 02:21
LogicT自体は合ってそう
よくわかってないけど、型が合った気がする xuwei-k/scala-logic@c7c8c7b (正しい自信はあまりない)
pocketberserker
@pocketberserker
Mar 18 2015 02:26
なるほど…
それで試してみます
pocketberserker
@pocketberserker
Mar 18 2015 02:36
LogicTでMonadReaderとかを使う予定はないのでできなかったら諦めよう…
Takeshi SHIMADA
@takeshishimada
Mar 18 2015 02:38
This message was deleted
kenji yoshida
@xuwei-k
Mar 18 2015 02:39
@expensivegasprices たぶん、書き込む場所間違ってますよ
Takeshi SHIMADA
@takeshishimada
Mar 18 2015 02:39
す、すみません。。>ALL
kenji yoshida
@xuwei-k
Mar 18 2015 02:39
(書いた後すぐなら削除できるはず)
Takeshi SHIMADA
@takeshishimada
Mar 18 2015 02:40
@xuwei-k ありがとうございます!
Sanshiro Yoshida
@halcat0x15a
Mar 18 2015 03:08
def logicTMonadReader[F[_, _], R](implicit F: MonadReader[F, R]): MonadReder[({ type G[A, B] = LogicT[({ type H[T] = F[A, T] })#H, B] })#G, R] = ???
Sanshiro Yoshida
@halcat0x15a
Mar 18 2015 03:14
自信ないけど。
Manabu Nakamura
@gakuzzzz
Mar 18 2015 03:41

kind 違うの

functional dependenciesを表現するための苦肉の策?

が正解っぽい気がしますね。
ken はそれの代わりに type ReadType と type ask でその辺の制約表してるように見えます。
functorial は良く分からないな……

pocketberserker
@pocketberserker
Mar 18 2015 04:03
なるほどー
kenji yoshida
@xuwei-k
Mar 18 2015 04:55
がくぞーさんが理解したらしいので、「ScalaでHaskellのfunctional dependenciesをエミュレートする方法」的な記事をきっと書いてくれる・・・
kenji yoshida
@xuwei-k
Mar 18 2015 05:14
ねこはるせんせーと自分のやつ微妙に違うな。どっちが正しいんだろう
// halcat0x15a
def logicTMonadReader[F[_, _], R](implicit F: MonadReader[F, R]): MonadReder[({ type G[A, B] = LogicT[({ type H[T] = F[A, T] })#H, B] })#G, R] = ???

// xuwei-k
def logicTMonadReader[F[_, _], R](implicit F: MonadReader[F, R]): MonadReder[({ type G[A, B] = LogicT[({ type H[T] = F[T, A] })#H, B] })#G, R] = ???
比較しやすいように、型パラメータ名を合わせたやつ↑
Manabu Nakamura
@gakuzzzz
Mar 18 2015 05:25
ファッ!?
Sanshiro Yoshida
@halcat0x15a
Mar 18 2015 05:38
F[_, _]の一番目の型引数が固定じゃないかな。
Manabu Nakamura
@gakuzzzz
Mar 18 2015 05:39
MonadReader の F は2個目の型引数がモナドとしての型引数になるっぽいからねこはるせんんせーのがあってるっぽい? 難しい……
Kota Mizushima
@kmizu
Mar 18 2015 10:56
Scalaでfunction dependencyはなんか既視感あるなと思って検索かけてみたら
Miles Sabinさんの記事だった
kenji yoshida
@xuwei-k
Mar 18 2015 10:57
あ、読んだことある気がするけど、当時たしか理解できなかったし、完全に忘れてた・・・
なるほど(あとで読もう)
Kota Mizushima
@kmizu
Mar 18 2015 10:57
これで忠実にfundepsをエミュレートできてるかはちと自信ないですが(自分もこの頃はHaskellのXXをエミュレートするぜ、とかいうのをよくやってた)
pocketberserker
@pocketberserker
Mar 18 2015 11:34
pocketberserker/scala-logic@2a25dcb
ひとまずコンパイルできました
kenji yoshida
@xuwei-k
Mar 18 2015 11:46
またimplicitの衝突が
いや、大丈夫かもしれない?