首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell <<loop>>异常

Haskell <<loop>>异常
EN

Stack Overflow用户
提问于 2014-10-15 12:47:56
回答 1查看 288关注 0票数 0

对于我的State实例,我得到了一个<>异常,我想这是指一个无限循环,但是我不知道我的代码如何在使用时导致这样的异常:

代码语言:javascript
复制
instance Monad (State' s) where

    -- return :: a -> State' s a
    return x = State' (\(s,c) -> (x, s, (c <> oneReturn) ))

    -- (>>=) :: State' s a -> (a -> State' s b) -> State' s b
    st >>= k = State' $ \(s,c) -> let (a, s', c) = runState' st (s,c)
                                  in runState' (k a) (s',(c <> oneBind) )

instance MonadState (State' s) s where

    -- get :: State' s s
    get = State' $ \(s,c) -> (s,s, (c <> oneGet))

    -- put :: s -> State' s ()
    put s = State' $ \(_,c) -> ((),s, (c <> onePut))

如果任何人有线索,并能帮助我,这是非常感谢!

向你问好,天夫。

编辑:作为参考,one用于在与当前计数值绑定时适当地增加计数器-

代码语言:javascript
复制
oneBind   = Counts 1 0 0 0
oneReturn = Counts 0 1 0 0
oneGet    = Counts 0 0 1 0
onePut    = Counts 0 0 0 1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-15 12:50:48

代码语言:javascript
复制
        let (a, s', c) = runState' st (s,c)

这是一个递归定义:结果中的c用于计算结果,该结果用于.

您可能指的是let (a,s',c') = runState' st (s,c) in runState' (k a) (s',(c' <> oneBind) ),没有阴影的c变量。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26383035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档