関数型プログラミング言語Haskell Part15
■ このスレッドは過去ログ倉庫に格納されています
0775デフォルトの名無しさん
2011/09/23(金) 22:53:18.29(このタイトルでググればすぐに見れます)
[1.3 Arrows as computations] の後半辺りが理解できません
(5ページ目 But whereas monadic computations are・・・の辺り)
monadic computation は出力の型だけパラメタ化されて、
入力の型ではパラメタ化されない
一方 arrow computation は入力も出力もパラメタ化される、とあります
また、そのため、先のページで例示したストリーミングの arrow は(SF 型)、
arrow だからこそ表現でき、monad では表現できない例だとあります
この辺りの意味がよく分かりません
特にストリーミングの arrow が monad では表現できないという意味がわかりません
分からないなりに考えてみたのですが、
arrow ==> runSF (arr (+1)) [1..5] (同ドキュメントの4ページ目)
monad ==> [1..5] >>= (\x -> [x+1])
これは、arrow と同じ computation を monad で表現できるが、
arrow ==> delay x = SF (x:) (同ページ)
monad ==> ???
これは monad の中だけでは表現できない、ということなんでしょうか?
(もしそうだとしても、入力もパラメタ化できる事との繋がりがまだモヤモヤしてる)
■ このスレッドは過去ログ倉庫に格納されています