gpt4 book ai didi

haskell - 如何在Haskell中为代数数据类型实现 "Ord"?

转载 作者:行者123 更新时间:2023-12-02 21:36:58 27 4
gpt4 key购买 nike

假设您的评分是这样的

Rating = OneStar | TwoStars | ThreeStars | FourStars | FiveStars

在 Haskell 中实例化/实现此类代数数据类型的“Ord”的最佳方法是什么?

最佳答案

最好的方法是将 deriving (Eq, Ord) 添加到类型的定义中。

由于您按升序列出了构造函数,因此派生的 Ord 实例将完全按照您想要的顺序提供。

但是,当定义的顺序与您想要的比较顺序不匹配并且由于某种原因无法更改定义中的顺序时,您仍然可以导出 Eq,因为为此顺序并不重要。给定一个 Eq 实例,我们可以手动为 Ord 编写一个实例。定义 compare 的最简洁方法可能是阐明 compare 应返回 LT 的所有组合,然后简单地使用 比较 x y | x == y = 等式;比较 _ _ = GT 剩余的组合。

关于haskell - 如何在Haskell中为代数数据类型实现 "Ord"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7079465/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com