次のようにクラスを使用して、Haskell でジェネリック型から型へのコンバーターを作成しました。
{-# LANGUAGE FlexibleInstances #-}
class Convertable a where
convert::a
instance Convertable (Int -> String) where
convert = show
instance Convertable (String -> Int) where
convert = read
main = do
let result = ((+1) . convert :: String -> Int) "1"
print result
しかし、String -> Int
それを機能させるには明示的な型が必要です(これは、ジェネリック型コンバーターを持つ目的を無効にします....)
なぜこの型宣言が必要なのですか?型を満たす可能性は 1 つだけですか?