24
나는ListT 모나드 트랜스포머는 왜 버그가있는 것으로 간주됩니다 - 모나드 법이 깨지십니까?
ListT
가 monad laws을 만족하지 않는 버그가 모나드 변압기의 전형적인 예라고 언급 보았다.
간단한 예를 통해 설명 할 수 있습니까?
편집 : 내 생각은 ListT []
입니다. 조금 잘못되었으므로, documentation은 교환 가능한 내부 모나드가 필요합니다. 그래서,이 요구 사항을 가지고 있다는 의미에서 ListT
버그가 있습니까? 아니면 또 다른 문제가 있습니까? 합니다 (examples at Haskell wiki 모두 ListT IO
사용 IO
분명히 교환 법칙이 성립하지 않습니다.)
설명서에 따르면 변환 된 모나드는 교환 가능해야합니다. 예. 'v n = ListT $ map (read :: String -> Int). 순열. 보여 주다 . (+ n)' – applicative
@ applylicative 좋은 지적, 나는 그것을 놓쳤다. 나는 (->) 모나드로 시도했지만, 지금까지는 반례를 찾을 수 없었다. –
음 ... 그들은 "모나드 변압기"라고 부르며 "교환 가능한 모나드 변압기"는 아닙니다. 몇 개의 특정 모나드에 적용했을 때만 올바르게 작동하는 변압기를 정의했다면 누구나 만족스러운 것으로 간주할까요? –