-1
比如我想E1添加兩個表達式和e2如何在字符串表示中添加兩個項目?
toString (Plus e1 e)= ??
我猜測它會是這樣的
toString (Plus e1 e)= ((toString e1) ++ "+" ++ (toString e2))
比如我想E1添加兩個表達式和e2如何在字符串表示中添加兩個項目?
toString (Plus e1 e)= ??
我猜測它會是這樣的
toString (Plus e1 e)= ((toString e1) ++ "+" ++ (toString e2))
我做了關於加是如何定義的一些假設。使用這段代碼,你可以在ghci提示符下鍵入expr,ghci將輸出表達式100-30 + 100 + 30。
module Main where
data Expr =
Plus Expr Expr
| Minus Expr Expr
| Value Int
-- This works but is not as Haskell-y as using Show
toString (Plus e1 e2) = toString e1 ++ "+" ++ toString e2
toString (Minus e1 e2) = toString e1 ++ "-" ++ toString e2
toString (Value n) = show n
instance Show Expr where
show (Plus e1 e2) = show e1 ++ "+" ++ show e2
show (Minus e1 e2) = show e1 ++ "-" ++ show e2
show (Value n) = show n
expr = (Plus
(Minus (Value 100) (Value 30))
(Plus (Value 100) (Value 30)))