首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >=>和(Ord a)的含义

=>和(Ord a)的含义
EN

Stack Overflow用户
提问于 2017-02-08 11:56:17
回答 2查看 1.5K关注 0票数 1

首先,请注意,我在网上查看(在堆栈溢出和Hoogle),看看我是否能找到这个话题的任何东西!

我一直在努力学习“学习你自己一个haskell”,有两件事我经常遇到,但我并不真正理解。=>和(Ord a)在几个重要功能中的使用。

例如:

代码语言:javascript
复制
max :: (Ord a) => a -> a -> a

是否使用与(Ord a)相同的“订购”,如:

代码语言:javascript
复制
compareWith :: Int -> Ordering

谢谢你花时间帮我解决这个(可能)简单的问题!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-08 12:03:39

=>符号用于在函数上构建类约束。在max示例中,这意味着a类型的所有参数都需要实现Ord类型。

考虑max的实现

代码语言:javascript
复制
max :: (Ord a) => a -> a -> a
max x y = if x < y then y else x

我们所知道的关于xy的唯一事情是,它们必须满足Ord类型。这反过来允许我们使用<函数进行比较,其签名是:

代码语言:javascript
复制
(<) :: Ord a => a -> a -> Bool

如果要从Ord a的定义中省略max约束,那么它就不会编译,因为max的主体将无法使用比较函数。

票数 7
EN

Stack Overflow用户

发布于 2017-02-08 12:03:47

部件(Ord a) =>是类型约束,指示为序号类型(可以排序)。

您可以将max :: (Ord a) => a -> a -> a理解为:

如果a是序数类型,则"max“接受a类型的2个参数,并返回a类型。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42112451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档