Don*_*tro 0 haskell type-inference
所以我把这句话放在我的ghci上
jkl x f y = f (map (+y) x)
Run Code Online (Sandbox Code Playgroud)
我把它拿出去了.
jkl :: Num b => [b] -> ([b] -> t) -> b -> t
Run Code Online (Sandbox Code Playgroud)
但是当我读到它时我很困惑.根据我的理解,jkl是带有[b],[b]和t以及b的类型num.最后它将输出t.是正确的阅读方式吗?
jkl :: Num b => [b] -> ([b] -> t) -> b -> t
Run Code Online (Sandbox Code Playgroud)
无论谁打电话jkl都要
b和tb在数字类型中选择(Num b约束)[b](列表b)作为第一个参数[b] -> t作为第二个参数(即获取[b]并返回一个t)b第三个参数t最后的结果双冒号::和粗箭头之间的任何内容=>都称为约束。在这种情况下,您有一个约束:Num b. 这个约束要求,无论b结果是什么类型,它都必须是类型 class 的实例Num。
在粗箭头之后,您将获得函数参数的类型,以及其结果的最后类型。
参数:
[b]- 类型的值列表b,无论是什么。[b] -> t- 一个函数,它接受一个列表b并产生一个t.b- 类型的单个值b。最后,函数结果是t。