标签: lambdabot

如何获取特定类型类实例的多态函数类型?

例如,键入:t apGHCi会得到结果

ap :: Monad m => m (a -> b) -> m a -> m b
Run Code Online (Sandbox Code Playgroud)

如果我已经知道我要使用的Monad实例,我((->) r)该如何查询ap该特定实例的类型?

haskell ghci lambdabot

6
推荐指数
2
解决办法
201
查看次数

lambdabot建议加入,但它不起作用

这是一个高阶函数,它将一个参数应用于给定函数两次:

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

ghci> dapp (*) 5
25
Run Code Online (Sandbox Code Playgroud)

我们可以缩短它吗?我们问lambdabot:

lambdabot> @pl \f x -> f x x
join
Run Code Online (Sandbox Code Playgroud)

万岁!我们来试试吧:

import Control.Monad (join)

dapp :: (a -> a -> a) -> a -> a
dapp = join
Run Code Online (Sandbox Code Playgroud)

但它不起作用:(

No instance for (Monad ((->) a))
  arising from a use of `join'
Possible fix: add an instance declaration for (Monad ((->) a))
In the expression: join …
Run Code Online (Sandbox Code Playgroud)

monads haskell join higher-order-functions lambdabot

4
推荐指数
1
解决办法
191
查看次数

标签 统计

haskell ×2

lambdabot ×2

ghci ×1

higher-order-functions ×1

join ×1

monads ×1