当我找到这种类型的函数elem
时,我正在学习:
Eq a => a -> [a] -> Bool
Eq a =>
是什么意思?
答案 0 :(得分:7)
Eq a
是一个所谓的类约束。这意味着替换a
的类型需要实现Eq
类型类。
在像Java这样的编程语言中,这就像实现接口一样。
您可能已经猜到Eq
提供了==
和/=
功能。
如果您有多个约束,则类型签名看起来像
fun :: (Ord a, Bounded a) => ...
要查看类型类提供的内容,您可以查看有关hackage的文档或在GHCi中运行:info Ord