我是 Haskell 的新手,一般来说,我是函数式编程的新手,我对它的语法有点不舒服。
在下面的代码中,=>
的作用是什么?表示?还有(Num a, Ord a)
?
loop :: (Num a, Ord a) => a -> (t -> t) -> t -> t
最佳答案
这是一个类型类约束; (Num a, Ord a) => ...
表示 loop
适用于任何类型 a
这是 Num
的一个实例和 Ord
typeclasses,分别对应数值类型和有序类型。基本上可以想到loop
与 =>
右侧的类型一样, 除了 a
必须是 Num
的实例和 Ord
.
您可以认为类型类与 OOP 接口(interface)基本相似(但它们不是同一个东西!)——它们封装了一组任何实例都必须支持的定义,并且可以使用这些定义编写通用代码。例如,Num
包括加法和乘法等数字运算,而 Ord
包括小于、大于等。
有关类型类的更多信息,请参阅 this introduction来自 Learn You a Haskell .
关于haskell - => 符号在 Haskell 中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9142731/