Cabbage.hs:この型の変数があいまいなのはなぜですか?
module Cabbage where
class Cabbage a
where foo :: a -> String -- the parameter is only present for its type,
-- the parameter value will be ignored
bar :: String -> a
quux :: Cabbage a => String -> a
quux s = bar (s ++ foo (undefined :: a))
私は(GHCで)コンパイルするとき、私は、このエラーメッセージが表示されます:
Cabbage.hs:7:19:
Ambiguous type variable `a' in the constraint:
`Cabbage a' arising from a use of `foo' at Cabbage.hs:7:19-38
Probable fix: add a type signature that fixes these type variable(s)
a
が曖昧である理由を私は理解していません。もちろん、7行目のa
は6行目のa
と同じですか?これをどうやって解決するのですか?
また、インスタンス単位の定数を宣言するより良い方法がありますか?