Jest to coś z połączenia State
i Writer
. Sprawdziłem prawa Monady.Co to jest dobra nazwa dla tej monady podobnej do stanu?
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
wydaje się trochę ułagodzony.
'conat'? Spodziewałbym się zwrotu "a = M". flip (,) a' lub coś podobnego. – ephemient
Sry, literówka, "const". – luqui
Dlaczego '> =' nie daje '' '' '' s ''' '' '' '' '' '' '' '' Jestem trochę zdezorientowany, gdy zwrócono mi monitory. – rampion