2008-11-29 12 views

Répondre

1

J'ai fait quelques hypothèses sur la façon dont Plus est défini. Avec ce code, vous pouvez simplement taper expr à l'invite ghci et ghci affichera l'expression 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)))