monadfix

    16热度

    1回答

    我在说我猜测是Data.Map错误的东西绊倒了,但也很可能在我的Haskell知识的错误。希望有人能澄清这是:) 请参考this gist。我将一个循环链表结构序列化为一个字节流。对于任何给定节点,该形式为: data Node = Node { val :: Word8 , next :: Node } 我希望它被序列化为一对字节:表示val第一字节,并且表示在

    13热度

    2回答

    问题主要在标题中。这似乎是mfix可以为任何一元计算定义,即使它可能发散: mfix :: (a -> m a) -> m a mfix f = fix (join . liftM f) 什么是错的这种结构?此外,为什么Monad和MonadFix类型类是分开的(即哪些类型的实例是Monad而不是MonadFix)?

    14热度

    1回答

    我们如何证明the continuation monad没有有效的MonadFix实例?

    1热度

    1回答

    使用ghc v8.0.1,使用-O2标志编译。 我遇到了RecursiveDo(mdo)的问题。有两个稍微不同的函数可以产生相同的输出,但它们不会。 下面的函数产生正确输出: proc2 :: Assembler() proc2 = mdo set (R 0) (I 0x5a5a) let r = (R 0) let bits = (I 2) let co

    2热度

    3回答

    更新:我已经添加了an answer,它描述了我的最终解决方案(提示:单个的Expr数据类型是不够的)。 我writing一点点表达式语言的评估,但是我卡上的LetRec结构。 这是语言: type Var = String type Binds = [(Var, Expr)] data Expr = Var Var | Lam Var Expr | App

    10热度

    1回答

    我正在为Ocaml中的haskell-like标记做camlp4扩展,并试图弄清楚GHC如何编译递归do-bindings(使用-XDoRec启用)。 我想知道是否有可能以严格的语言(如Ocaml/F#/ SML/...)存在monadic fixpoint combinator? 如果是,它怎么样?它会非常有用吗?