물고기 조작자에 비해 Monads는 연관성을 만족시킵니다. 다음 식을 의미람다 식에서 모나드에 전달 된 매개 변수에 대해 증명할 수있는 것은 무엇입니까?
(람다 식으로) 결합과 같은 번역(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
모호하다.
그러나 모든 모나드 코드가 람다에 대한 바운드 변수를 분리 된 상태로 유지하는 것은 아닙니다. 예 :
[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
을 제공합니다. 위의 방정식과 일치하지 않아 매우 잘 나타났습니다. 저는 물고기를 근본적인 개념으로 여기에서 봅니다. 그리고 그것이 제가 쓰는 전형적인 모나드와 어떻게 상호 작용하는지 이해하려고 노력하고 있습니다. 위의 내용을 더 잘 이해하고 싶습니다. 이 접근의
한 가지 방법은 내가이 대칭의 종류를 의미한다 생각 목록 식 구문
[ (n,ch) | n <- [1, 2], ch <- ['a', 'b'] ]
에서 의미를 얻기 위해 노력하는 것입니다.
람다 식과 모나드를 연결하는 멋진 대칭이 있습니까? 아니면 내가 이것에 너무 많이 읽고 있니? 매우 중첩 된 람다 표현에 대한 내 두려움이 잘못되었거나 합리적입니까?
나는이 질문을 전혀 이해하지 못합니다. – melpomene
"직관적으로 중첩 된 람다 간의 미묘한 결합을 두려워합니다." - 당신이 걱정하고있는 것에 대해 좀 더 말해 줄 수 있습니까? – duplode
@duplode 내 편집이 내 걱정을 분명히합니까? – Polymer