haskell - => 符号在 Haskell 中是什么意思?

标签 haskell symbols

我是 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/

相关文章:

haskell - Haskell 反射中的黑魔法

haskell - 给定一个教堂编码数字作为 CEK 机器的闭包结果,如何取回该数字?

haskell - 有逆变单子(monad)吗?

Haskell 总结通过树的所有路径

python - 尽管使用两级命名空间编译,但库仍需要平面命名空间中的符号

java - 检查字符串是否只包含某些字符

没有完整类型知识的 Haskell 多态调用

visual-studio-2015 - 使用 SpecFlow for Visual Studio 2015 的事件符号突出显示不起作用

JavaScript - 修复计算器的 da*n 插入符号

ruby - 为什么 "300".intern 有效但 :300 is not