我有一个模糊的类型变量在下面的“试验”的定义错误,我想知道是否有任何可以做到这种情况的工作?我只想处理实例而不是明确的数据类型(例如下面包含的MO1,MO2)。使用haskell读取和类型类 - 模糊类型变量错误
module Tc102 where
class (Show a, Read a) => MyObj a where
alpha :: a->String
beta :: a->Int
data MO1 = MO1 { a1 :: String, b1 :: Int } deriving (Show,Read)
data MO2 = MO2 { a2 :: String, b2 :: Int } deriving (Show,Read)
instance MyObj MO1 where
alpha = a1
beta = b1
instance MyObj MO2 where
alpha = a2
beta = b2
a = MO1 "a" 3
b = MO2 "b" 4
test :: MyObj a => a->String
test = alpha
showMe :: (MyObj a)=> a -> String
showMe = show
readMe :: (MyObj a) => String -> a
readMe = read
trial :: MyObj a => a -> String
trial = test . readMe . showMe
在此先感谢所有!但我担心我可能需要去将老ADT转换为“最新版本的辅助功能......
西蒙
编辑为了澄清,想象一下,我第一次展示给一个文件,然后稍后重新加载对象。然后,我具备的功能更像是
trial :: String -> Int
trial s = beta x
where x = readMe s
有点更多的type-foo,得到了应该工作的东西。谢谢! – 2010-06-22 06:32:27