我必须推导出这个函数的类型:
func x = map -1 x
而且我已经找到了一种方法,使用提示将其更改为 lambda 表达式:
func = \x -> (map) - (1 x)
如果我这样表达,它很好,我得到与原版相同的类型,但我不确定为什么它会这样分组。有人可以解释一下吗?
例如,为什么不是这样:
func = \x -> (map - 1) x
或类似的东西。
我知道这是一个无用的函数等,但我不能更改函数,我只需要导出它的类型。
如果你把这个函数写在一个文件中,例如:test.hs has func x = map -1 x
and use :t func
in the interpreter,它会回复:
func :: (Num (t -> (a -> b) -> [a] -> [b]),
Num ((a -> b) -> [a] -> [b])) =>
t -> (a -> b) -> [a] -> [b]