Как создать экземпляр Read для типа данных в haskell

Итак, у меня есть тип данных

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)

дал бы мне

(5 4)

Теперь я хочу, чтобы

read "(3 4)" :: SomeType Int 

производил

(3 4)

или

read "(a b)" :: SomeType Char

производил

(a b)

. Я не понимаю, как использовать класс Read.

13
задан alternative 21 October 2011 в 16:29
поделиться