Haskell 型クラスを理解しようとしています。以下が機能しないのはなぜですか?
{-# LANGUAGE FlexibleInstances #-}
class IntClass t
instance IntClass Int
intToIntClass :: (IntClass r) => Int -> r
intToIntClass x = x
明らかに、「インスタンス」は、私が意味するべきだと思うことを意味していません。代わりに、理解できないエラーメッセージが表示されます。
Could not deduce (r ~ Int)
from the context (IntClass r)
bound by the type signature for intToIntClass :: IntClass r => Int -> r
at f.hs:10:1-16
`r' is a rigid type variable bound by
the type signature for intToIntClass :: IntClass r => Int -> r
at f.hs:10:1
In the expression: x
In an equation for `intToIntClass t': intToIntClass x = x