私は答えを見つけるためにグーグルで検索してきましたが、ここでいくつかの質問をすることさえできました. これはあいまいなエラーのようで、私のインスタンスで解決する方法がわかりません。
問題のあるコードは次のとおりです。
pos :: (Eq a) => [a] -> a -> Int
pos [] _ = -1
pos (x:xs) y
| not $ elem y (x:xs) = -1
| x == y = 0
| otherwise = 1 + pos xs y
-- Get the same element from another range as one element of the first range.
refPos :: (Eq a) => [a] -> [b] -> a -> b
refPos r1 r2 e1 = r2 !! (r1 `pos` e1)
letterNumber :: (Eq a, Char a) => a -> Int
lettNumber x = refPos ['a'..'z'] [0..25] x
正確なエラーのテキストは次のとおりです。
15:1 letterNumber の型シグネチャには付随するバインディングがありません。
元々、私が入れた型シグネチャは Char -> Int でしたが、うまくいきませんでした (Eq について何か言っていたのですが、私も Haskell に慣れすぎて適切に解釈できませんでした)。そこで、型シグネチャを Eq クラス制約を持つように変更しました。何が間違っているか、または回避策を誰かが指摘できれば、これは私が取り組んでいるプロジェクトのドアストップの問題であるため、非常に高く評価されます。