私は Haskell で作業を開始していますが、私が行おうとしているこの等価チェックがうまくいきません。
私は関数を持っています。countLetter a [b] c
ここa
で、はchar、b
はcharのリストc
、intです。(型宣言は正常に渡されました。) しかし、この式で問題が発生しました。
if a == head(b)
次のメッセージが表示されます。
Type error in application
*** Expression : a == head b
*** Term : a
*** Type : [a]
*** Does not match : a
*** Because : unification would give infinite type
必要に応じて、私のコード全体は次のとおりです。
countLetter :: char -> [char] -> int
countLetter a [b] c = if null b
then []
else
if a == head(b)
then countLetter a tail(b) c+1
else
countLetter head(b) tail(b) c
ヘルプやアドバイスをいただければ幸いです。ありがとうございました。