魚オペレーターに対して、モナドは連合性を満たす。次の式を意味ラムダ式のパラメータについて、モナドに渡すことが証明できるものは何ですか?
(ラムダ式で)バインドのように見えるように変換(h >=> g) >=> f = h >=> (g >=> f)
これ、
\a -> h a >>=(\b -> g b >>= \c -> f c) =
\a ->(h a >>= \b -> g b)>>= \c -> f c
これは単項構図を理解するための良い方法である
(a -> h a >>= \b -> g b >>= \c -> f c) = h >=> g >=> f
曖昧でありません。
ただし、すべてのMonadicコードがラムダへのバインドされた変数を分離しないようにしているわけではありません。例えば、
[1,2] >>= \n -> ['a','b'] >>= \ch -> return (n,ch) =
[(1,'a'),(1,'b'),(2,'a'),(2,'b')]
トップラムダから「n」が得られました。
は、より一般的には、
a -> g a >>= \b -> f a b
fは上記でAとBの両方に依存します。上記のf、g、(> =>)の定義は、
\a -> (\x -> g a) >=> f a
です。これはよく分かりません。上記の方程式と一致しません。私はここで基本的な概念として魚を参照し、私はそれが私が書いている典型的なMonadsとどのように相互作用するのかを理解しようとしています。上記をより良く理解したいと思います。これを近づいての
一つの方法は、私は、これは対称性のようなものを意味だと思うリストの表現の構文
[ (n,ch) | n <- [1, 2], ch <- ['a', 'b'] ]
から意味を取得しようとしていることです。
ラムダ式とMonadsを結ぶ素晴らしい対称はありますか?それともあまりにもこれを読んでいるのですか?非常にネストされたラムダ式の私の恐怖は間違っているか合理的ですか?
私はこの質問を全く理解していません。 – melpomene
"直感的に、私はネストされたラムダ間の微妙な結合を恐れています。" - あなたが心配していることについてもう少し言っていただけますか? – duplode
@duplode私の編集は私の心配を明確にしていますか? – Polymer