2

次のようにクラスを使用して、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 つだけですか?

4

2 に答える 2