Haskell:否定类型Ordering的值

时间:2017-12-14 09:18:45

标签: haskell

有没有办法否定或反转类型订购的价值?像这样:

inv = not compare

2 个答案:

答案 0 :(得分:10)

如果您从compare收到订购,那么您可以更改 它到flip compare

> flip compare 3 4
GT

或者您可以将Down中的值包装在Data.Ord中,这是一种新类型 存在是为了扭转事物的顺序:

> compare (Down 3) (Down 4)
GT

如果您不能或不想更改订购的地点 来自,你需要一个功能来反转它,我不知道a 内置的。您可以编写明显的模式匹配,或者从那以后 订购本身就是订购的:

inv :: Ordering -> Ordering
inv = compare EQ

答案 1 :(得分:-1)

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

我引用:

  

"如果a有与之关联的Ord实例,则比较两个值   这样包装将使你与正常的排序顺序相反。"

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