在Haskell重新订购chars的Ord?
我是否可以调整Haskell程序中规则字符的在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
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≅ 向下字符
。