定义Get和put

时间:2015-10-17 21:34:55

标签: haskell monads

对于学校编程练习,我要求getputmodifymodify的方式实施get和{{put 1}}。所以我一直在困惑一些堆叠溢出的帖子和其他材料把这些碎片放在一起。这是我到目前为止所拥有的

class Monad m => MonadState m s | m -> s where

    get :: m s
    get  =  modify id -- (\s -> s)

    put :: s -> m ()
    put s = do
        modify (\_ -> s)
        return ()


    modify :: (s -> s) -> m s
    modify f = do
        x <- get
        let newX = f x
        put x
        return newX

我已经认为它运行不正常,所以我的问题是如何在ghci中测试这段代码?并且可能会把我推向正确的方向。

编辑: 整个monad的想法有点压倒性,我老实说我不知道​​如何测试它或在工作中看到它。

0 个答案:

没有答案