이것은 State
과 Writer
의 조합입니다. 나는 모나드 법칙을 점검했다.이 상태와 유사한 모나드의 이름은 무엇입니까
newtype M s a = M { runM :: s -> (s,a) }
instance (Monoid s) => Monad (M s) where
return = M . const . (mempty,)
m >>= f = M $ \s ->
let (s' ,x) = runM m s
(s'',y) = runM (f x) (s `mappend` s')
in (s' `mappend` s'', y)
StateWriter
이 다소 절름발이입니다.
'conat'? 나는'return a = M을 기대했을 것이다. 플립 (,) a' 또는 그런 것. – ephemient
Sry, typo,'const'. – luqui
왜''= 'yield'('\ mappend \'s '\'mappend \'s' ', y)'입니까? 나는 반환 된 모노로이드에 대해 조금 혼란스러워합니다. – rampion