相关疑难解决方法(0)

为什么f =(+)不需要类型注释?

我的意思是,例如,

f :: (Enum a) => a -> a --without this line, there would be an error
f = succ
Run Code Online (Sandbox Code Playgroud)

这是因为succ需要它的参数是可枚举的(succ :: (Enum a) => a -> a)

但对于 (+)

f = (+) --ok
Run Code Online (Sandbox Code Playgroud)

虽然(+)声明是(+) :: (Num a) => a –> a –> a.

我的意思是,我为什么不需要申报ff :: (Num a) => a –> a –> a

haskell functional-programming

10
推荐指数
2
解决办法
346
查看次数

单态限制,ghci和let表达

这个表达式不正确.

f = show
Run Code Online (Sandbox Code Playgroud)

但是,在ghci这是合法的

let f = show
Run Code Online (Sandbox Code Playgroud)

而且,它的类型改为

() -> String
Run Code Online (Sandbox Code Playgroud)

这种现象有什么解释吗?

haskell

3
推荐指数
1
解决办法
117
查看次数

标签 统计

haskell ×2

functional-programming ×1