我使用如下类在 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
才能使其工作(这否定了拥有泛型类型转换器的目的......)
为什么根本需要这种类型声明,只有一种可能性满足类型?