Какое хорошее название для этой монады состояния

Это что-то вроде комбинации 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 кажется немного хромым.

7
задан luqui 14 December 2010 в 07:57
поделиться