我的意思是,例如,
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.
我的意思是,我为什么不需要申报f的f :: (Num a) => a –> a –> a?
这个表达式不正确.
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)
这种现象有什么解释吗?