- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题主要在标题中。好像是 mfix
可以为任何一元计算定义,即使它可能会发散:
mfix :: (a -> m a) -> m a
mfix f = fix (join . liftM f)
Monad
和
MonadFix
类型类分开(即,什么类型有
Monad
的实例,但没有
MonadFix
的实例)?
最佳答案
left shrinking (or tightening) law says那
mfix (\x -> a >>= \y -> f x y) = a >>= \y -> mfix (\x -> f x y)
mfix (\x -> a' >> f x) = a' >> mfix f
mfix
内部的一元 Action 必须只计算一次。这是
MonadFix
的主要属性之一您的版本无法满足。
mfix
的情况下这样做,这要归功于可变性):
import Control.Monad
import Control.Monad.Fix
import Data.IORef
data MList a = Nil | Cons a (IORef (MList a))
mrepeat :: a -> IO (MList a)
mrepeat x = mfix (liftM (Cons x) . newIORef)
main = do
(Cons x _) <- mrepeat 1
print x
mfix
的变体调用
mrepeat
永远不会结束,因为你用
newIORef
调用内部部分无限期地。
关于haskell - 是否有 Monad 的实例但没有 MonadFix 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25814489/
我正在为 Ocaml 中类似 haskell 的 do 表示法开发 camlp4 扩展,并试图弄清楚 GHC 如何编译递归 do-bindings(使用 -XDoRec 启用)。 我想知道一元定点组合
实例定义为 instance MonadFix [] where mfix f = case fix (f . head) of [] -> []
我凭直觉理解 MonadFix 的纯度、紧缩和嵌套规律.但是,我很难理解滑动定律。 mfix (fmap h . f) = fmap h (mfix (f . h)) -- for strict h
一个简单的问题,我希望:binary包定义了两种类型, Get and Put .前者本质上是一个状态单子(monad),后者本质上是一个作家。国家和作家都有合理的MonadFix实例,所以我希望 G
http://hackage.haskell.org/package/free Control.Monad.Free.Free 中的 允许人们访问任何给定 Functor 的“免费 monad”。但是
我想从 System.Random.MWC.Monad 用 Rand monad 生成无限的数字流。如果这个 monad 有一个 MonadFix 实例,或者像这样的实例: instance (Pri
给定 newtype Tree m a = Tree { runTree :: m (Node m a) } data Node m a = Node { nodeValue :: a , n
问题主要在标题中。好像是 mfix可以为任何一元计算定义,即使它可能会发散: mfix :: (a -> m a) -> m a mfix f = fix (join . liftM f) 这种结构有
我们如何证明 the continuation monad没有 MonadFix 的有效实例? 最佳答案 实际上,并不是说不能有 MonadFix例如,只是库的类型有点太受限制了。如果您定义 Cont
我是一名优秀的程序员,十分优秀!