所以我有一个数据类型
现在我希望有一个...
或者
我不知道如何使用Read类。
data SomeType a =
Type a |
Mix (SomeType a) (SomeType a)
这是我展示 SomeType 实例的方式
instance (Show a) => Show (SomeType a) where
show (Type a) = show a
show (Mix a b) = "(" ++ show a ++ " " ++ show b ++ ")"
所以
Mix (Type 5) (Type 4)
would give me
(5 4)
现在我希望有一个...
read "(3 4)" :: SomeType Int
生产
(3 4)
或者
read "(a b)" :: SomeType Char
生产
(a b)
我不知道如何使用Read类。
SomeType Char
的示例并不是show (Mix (Type 'a') (Type 'b'))
生成的内容。 - hvrderiving (Show, Read)
来派生Show
和Read
实例。虽然它们不会产生您的输出和输入,但它们是显示(有时是读取)值的标准方式,这就是为什么您应该使用它们而不是自己的实例。如果您想以不同的方式显示它们,请使用一个单独的函数并将其命名为render
或其他名称。 - bzn