想象一下,你有一个评级
Rating = OneStar | TwoStars | ThreeStars | FourStars | FiveStars
Run Code Online (Sandbox Code Playgroud)
在Haskell中为这样的代数数据类型实例化/实现"Ord"的最佳方法是什么?
sep*_*p2k 15
最好的方法是添加deriving (Eq, Ord)到类型的定义.
由于您按升序列出了构造函数,因此派生Ord实例将为您提供所需的顺序.
但是,如果由于某种原因更改定义中的顺序不是一个选项,您仍然可以导出Eq,因为顺序无关紧要.给定Eq的实例,我们可以手动为Ord编写实例.定义比较最简洁的方法可能是拼出比较应返回LT的所有组合,然后简单地使用比较xy | x == y = Eq; 比较_ _ = GT表示其余组合.
| 归档时间: |
|
| 查看次数: |
1421 次 |
| 最近记录: |