[英]Meaning of => and (Ord a)
首先,请注意,我在线上(在stackoverflow和Hoogle中)查看是否可以找到与此主题相关的任何内容!
我一直在通过“学着一个haskell自己”来工作,而我经常绊倒的两件事是我不太了解的。 在多个重要函数中使用=>和(Ord a)。
举个例子:
max :: (Ord a) => a -> a -> a
并且“订购”的用法与(Ord a)相同,如下所示:
compareWith :: Int -> Ordering
感谢您抽出宝贵时间为我解决这个(可能)simpole问题!
=>
符号用于在函数上建立类约束。 在max
示例中,这意味着所有类型a
参数都需要实现Ord
类型类。
考虑实施max
max :: (Ord a) => a -> a -> a
max x y = if x < y then y else x
我们对x
和y
唯一了解的是它们必须满足Ord
类型类。 进而允许我们使用<
函数进行比较,其签名为:
(<) :: Ord a => a -> a -> Bool
如果要从max
的定义中忽略Ord a
约束,则它将无法编译,因为max
的正文将无法使用比较函数。
(Ord a) =>
是类型约束,指示a是序数类型(可以排序)。
您可以将max :: (Ord a) => a -> a -> a
读为:
其中a是序数类型,“ max”接受2个类型为a的参数并返回类型a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.