2014-03-04 78 views
0
compLetters :: Char -> Char -> Char 
compLetters a b = chr (min (ord a ord b)) 

我想比較字符以查看哪個字母首先出現在字母表中。我試圖用上面的代碼來做到這一點,但出現錯誤。任何幫助表示感謝,謝謝。Haskell比較兩個字符

+4

雖然我們可以看到錯誤是什麼,但說「出現錯誤」是您可以在問題中包含的最不具說明性的陳述。你應該總是包含錯誤。即使它與你無關,也可能幫助其他人理解正在發生的事情。 – chi

回答

9

由於Char實現Ord,你可以用min直接:

firstChar :: Char -> Char -> Char 
firstChar a b = min a b 

或者更簡單地說

firstChar = min 

或者你可以只用min在你的代碼

之所以你代碼失敗是語法。你有

min (ord a ord b) 

,它解析爲

min (((ord a) ord) b) 

這表示,ord接受3個參數和min需要1種說法,但是這並不類型檢查。相反,您應該有

min (ord a) (ord b) 
0

Char是Ord的一個實例,因此您可以使用(<)。

> 'a' < 'b' 
    True