Haskell Quine:“ap”Monad

时间:2013-04-29 17:11:36

标签: haskell monads quine

使用" ap"的正确方法是什么?哈斯克尔的莫纳德?我想做类似的事情:

main = (putStr . ap (++) show) "main = (putStr . ap (++) show) "

但我收到错误"不在范围内:' ap'。"

使用"导入Control.Monad"什么也没做。 我试过给它

"ap :: Monad m => m (a -> b) -> m a -> m b" 

然后我得到"'ap'的类型签名没有伴随的约束"

1 个答案:

答案 0 :(得分:10)

导入Control.Monad应该会为您提供ap。但是,除了最新版本的GHC(7.6.1和更新版本)之外,您还需要导入Control.Monad.Instances以使用monad实例来实现功能。

或者,您可以导入Control.Applicative,其中<*>运算符({1}}已归一化为ap,以及将其与函数一起使用的必要实例