【发布时间】:2011-10-20 19:47:39
【问题描述】:
我正在定义一个 monad 的实例,如下所示:
data Something = Something a
instance Monad Something where
return a = Something a --Wraps a in 'Something', correct?
m >>= f = do
var <- m
return $ f var --I want this to pass var to f, then wrap the result
--back up in the 'Something' monad with the return I
--Just defined
问题是->
1:我所做的事情是否有任何明显的错误/误解?
2:Haskell 是否知道从 m >>= f 调用我上面定义的返回值
3:如果我出于某种原因定义了另一个函数
f :: Something a -> Something b
f x = do
var <- x
return $ doMagicTo x
return 会调用我在 monad 实例中定义的 return 并将 x 包装在 Something 中吗?
【问题讨论】: