私はほとんど実用的な人ですが、私はこのことが面白いと思います。機能的プログラミングにおけるシーケンスの理解
私はモナディックシーケンシングについて考えていましたが、私は明確にする必要があるものがいくつかあります。 だからここ を愚かな響きの危険にさらされて、それは次のとおりです。
モナドメンバーバインド
bind :: m b -> (b -> m c) -> m c
はあなたの中間値への明示的なアクセスを与える「アクション」を順序付けることができます。
これは私にカテゴリメンバー(.)
より与えない方法:これにより
(.) :: cat b c -> cat a b -> cat a c
を私は順序と中間値へのアクセスを得ることができます。 すべての後に(f . g) x = f(g (x))
。
(.)
と順序付けることができる場合、なぜシーケンシングにはbind
が必要ですか?
'' 'である(> =>)::モナドM =>( - > MB) - のモナドバージョン(。)>(B - > MC ) - >(a - > mc) '、Kleisli構成。 –
これは実際にあなたに* less *を与えます。 'C(a、b)= a - > m b'は' bind 'を構成要素とし、 'return'をアイデンティティとする* Kleisliカテゴリ*を 'm'とする。 –
'f(g x)'では 'g x'が最初に起こらなければならないということは、まったく真実ではありません。これは厳密なセマンティクスの下でのみ真実である。しかし、それが現れている間、それは前に、中にあってもいなくてもよい。 – Ingo