Vì vậy, tôi có một kiểu dữ liệuLàm thế nào để tạo ra thể hiện của đọc cho một kiểu dữ liệu trong Haskell
data SomeType a =
Type a |
Mix (SomeType a) (SomeType a)
dụ chương trình của tôi này cho SomeType
instance (Show a) => Show (SomeType a) where
show (Type a) = show a
show (Mix a b) = "(" ++ show a ++ " " ++ show b ++ ")"
Vì vậy
Mix (Type 5) (Type 4)
sẽ cung cấp cho me
(5 4)
Bây giờ tôi muốn có
read "(3 4)" :: SomeType Int
sản xuất
(3 4)
hoặc
read "(a b)" :: SomeType Char
sản xuất
(a b)
Tôi đang mất tích trên làm thế nào để sử dụng lớp đọc.
btw, ví dụ của bạn cho 'SomeType Char' không phải là những gì' show (Mix (Type 'a') (Type 'b')) ' sẽ tạo ra. – hvr
Bạn có thể lấy được cả hai - ví dụ Show và Read - với 'deriving (Show, Read)' sau kiểu delcaration. Mặc dù chúng không tạo ra đầu ra và đầu vào của bạn, chúng là một cách tiêu chuẩn để hiển thị (và đôi khi đọc) các giá trị, đó là lý do tại sao bạn nên sử dụng chúng thay vì các trường hợp của riêng bạn. Nếu bạn muốn hiển thị chúng theo một cách khác, hãy sử dụng một hàm riêng biệt và gọi nó là 'render' hoặc như vậy. – bzn