0
compLetters :: Char -> Char -> Char
compLetters a b = chr (min (ord a ord b))
我想比較字符以查看哪個字母首先出現在字母表中。我試圖用上面的代碼來做到這一點,但出現錯誤。任何幫助表示感謝,謝謝。Haskell比較兩個字符
compLetters :: Char -> Char -> Char
compLetters a b = chr (min (ord a ord b))
我想比較字符以查看哪個字母首先出現在字母表中。我試圖用上面的代碼來做到這一點,但出現錯誤。任何幫助表示感謝,謝謝。Haskell比較兩個字符
由於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)
Char是Ord的一個實例,因此您可以使用(<)。
> 'a' < 'b'
True
雖然我們可以看到錯誤是什麼,但說「出現錯誤」是您可以在問題中包含的最不具說明性的陳述。你應該總是包含錯誤。即使它與你無關,也可能幫助其他人理解正在發生的事情。 – chi