lambdabot建议加入,但它不工作

lambdabot建议加入,但它不工作

问题描述:

这是一种将高阶函数的参数给定函数两次:lambdabot建议加入,但它不工作

dapp :: (a -> a -> a) -> a -> a 
dapp = \f x -> f x x 

ghci> dapp (*) 5 
25 

我们可以作出这样的短?让我们来问一下:

lambdabot> @pl \f x -> f x x 
join 

Hooray!让我们来尝试一下:

import Control.Monad (join) 

dapp :: (a -> a -> a) -> a -> a 
dapp = join 

但它不工作:(

No instance for (Monad ((->) a)) 
    arising from a use of `join' 
Possible fix: add an instance declaration for (Monad ((->) a)) 
In the expression: join 
In an equation for `dapp': dapp = join 

为什么会出现这种情况我是否导入错误join我找不到另一join上Hoogle

?。
+7

只要导入'Control.Monad.Instances' - 我认为那个实例在那里。 – 2013-04-22 20:02:04

+2

@Thomas如何有选择地只导入Monad(( - >)r)'实例? – fredoverflow 2013-04-22 20:04:39

+6

@FredOverflow不能有选择地导入实例。您可以'导入Control.Monad.Instances()',它将导入所有实例,而不是其他任何东西。 – 2013-04-22 20:05:39

Until recently,为(->) rFunctorMonad实例中Control.Monad.Instancesorphan instances

但是,从base-4.6.0.0(GHC 7.6.1)开始,这些实例已移至Prelude和(现在为空)Control.Monad.Instanceshas been deprecated

因此,要使用这些实例,请输入Control.Monad.Instances或升级您的GHC。

+0

谢谢哈马尔,我不知道他们已经搬家了。 – 2013-04-22 22:50:10

+0

@ ThomasM.DuBuisson:我也没有。因为某些原因,[GHC 7.6.1发布说明](http://www.haskell.org/ghc/docs/7.6.1/html/users_guide/释放-7-6-1.html#id9281219)。 – hammar 2013-04-22 23:01:42