在Haskell重新订购chars的Ord?

在Haskell重新订购chars的Ord?,haskell,Haskell,我是否可以调整Haskell程序中规则字符的Ord(顺序)以便'a'>'b' 如果没有,你们对我如何最好地复制这个功能有什么建议吗?我尝试了Data magicLetters='b'|'a'|'c'派生(Show,Ord),但在语法方面没有取得太大进展。根据您使用它的原因和方式,您可以尝试包装器类型: newtype MyChar = MyChar Char instance Eq MyChar where MyChar x == MyChar y = x == y instance

我是否可以调整Haskell程序中规则字符的
Ord
(顺序)以便
'a'>'b'


如果没有,你们对我如何最好地复制这个功能有什么建议吗?我尝试了
Data magicLetters='b'|'a'|'c'派生(Show,Ord)
,但在语法方面没有取得太大进展。

根据您使用它的原因和方式,您可以尝试包装器类型:

newtype MyChar = MyChar Char

instance Eq MyChar where
    MyChar x == MyChar y = x == y

instance Ord MyChar where
    MyChar x <= MyChar y = x >= y   -- reverses the order
newtype MyChar=MyChar
实例Eq MyChar在哪里
MyChar x==MyChar y=x==y
实例Ord MyChar在哪里
MyChar x=y——颠倒顺序
如果需要更具体的逻辑,如
a>b
,但
b
,则可能需要一些排序表


EDIT:正如@leftaroundabout所指出的,上述内容已经存在,因为它实际上必须是
Char
,还是您使用
Char
作为其他类型的代理,比如
data MagicLetters=MLB | MLA | MLC派生(Show,Ord)
?@chepner well我正在从文件中读取数据,因此它们以字符的形式出现-就好像我想从随机字符的文件中找到最大的字符(使用我的任意顺序)。读取数据的函数应该处理将输入包装到新类型中的问题。如果你只想反转顺序,您可以使用。如果您需要一些自定义顺序来获得最大值,请尝试
maximumOn
maximumBy
,如果新类型包装的摩擦是不必要的。
MyChar≅ 向下字符