繁体   English   中英

=>和(Ord a)的含义

[英]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

我们对xy唯一了解的是它们必须满足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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM