繁体   English   中英

Haskell:否定Ordering类型的值

[英]Haskell: negate a value of type Ordering

有没有一种方法可以否定或求逆Ordering类型的值? 像这样:

inv = not compare

如果要从compare获得Ordering,则可以将其更改为flip compare

> flip compare 3 4
GT

或者,您可以将值包装在Data.Ord DownData.Ord是一种新的类型,可以用来颠倒事物的顺序:

> compare (Down 3) (Down 4)
GT

如果您不能或不想更改Ordering的来源,则需要一个函数将其反转,并且我不知道内置函数。 您可以编写明显的模式匹配,或者由于Ordering本身是有序的:

inv :: Ordering -> Ordering
inv = compare EQ

是的,它包含在Data.Ord中,并且是一个名为Down的类型。

我引用:

“如果一个具有与之关联的Ord实例,则比较由此包装的两个值将得到与它们正常排序顺序相反的结果。”

参考: https : //hackage.haskell.org/package/base-4.10.1.0/docs/Data-Ord.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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