这个像州一样的monad是个好名字

luq*_*qui 7 monads haskell

这是相结合的东西StateWriter.我检查过monad法律.

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)
Run Code Online (Sandbox Code Playgroud)

StateWriter 看起来有点蹩脚.

fuz*_*fuz 0

也许可以调用SW(Statefull Writer),我认为短名称相当直观,并且可以节省一些打字时间。

  • `输入 SW ab = LongerAndMoreDescriptiveName ab`? (2认同)