2008-11-29 82 views

回答

1

我做了關於加是如何定義的一些假設。使用這段代碼,你可以在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))) 
相關問題