所以我把这句话放在我的ghci
上jkl x f y = f (map (+y) x)
我把它拿回来了。
jkl :: Num b => [b] -> ([b] -> t) -> b -> t
但是当我读到它时我很困惑。根据我的理解,jkl是带有[b],[b]和t以及b的类型num。最后它将输出t。是正确的阅读方式吗?
答案 0 :(得分:9)
jkl :: Num b => [b] -> ([b] -> t) -> b -> t
致电jkl
的人必须
b
和t
b
约束)Num b
[b]
(b
列表)作为第一个参数[b] -> t
作为第二个参数(即取[b]
并返回t
)b
作为第三个参数t
作为最终结果答案 1 :(得分:4)
双冒号::
和胖箭=>
之间的任何内容都称为约束。在这种情况下,您有一个约束:Num b
。这个约束要求,无论b
类型是什么,它都必须是类Num
类型的实例。
在胖箭头之后,您将获得函数参数的类型,以及其结果的最终类型。
参数:
[b]
- 类型b
的值列表,无论是什么。[b] -> t
- 一个获取b
列表并生成一个t
的函数。b
- 类型为b
的单个值。最后,函数结果为t
。