Haskell比较两个字符

0 haskell haskell-platform

compLetters :: Char -> Char -> Char
compLetters a b = chr (min (ord a ord b))
Run Code Online (Sandbox Code Playgroud)

我试图比较字符,看看哪一个出现在字母表中的第一位.我尝试使用上面的代码执行此操作但出现错误.任何帮助表示感谢,谢谢.

bhe*_*ilr 9

Char实现以来Ord,您可以直接使用min:

firstChar :: Char -> Char -> Char
firstChar a b = min a b
Run Code Online (Sandbox Code Playgroud)

或者更简单

firstChar = min
Run Code Online (Sandbox Code Playgroud)

或者你可以min在你的代码中使用

您的代码失败的原因是语法.你有

min (ord a ord b)
Run Code Online (Sandbox Code Playgroud)

解析为

min (((ord a) ord) b)
Run Code Online (Sandbox Code Playgroud)

其中说ord需要3个参数并且min需要1个参数,但这不是类型检查.相反,你应该有

min (ord a) (ord b)
Run Code Online (Sandbox Code Playgroud)