Mercurial > repo
diff interps/rhotor/Node.hs @ 996:859f9b4339e6
<Gregor> tar xf egobot.tar.xz
author | HackBot |
---|---|
date | Sun, 09 Dec 2012 19:30:08 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/interps/rhotor/Node.hs Sun Dec 09 19:30:08 2012 +0000 @@ -0,0 +1,31 @@ +module Node ( + Node(Function,Application,Cons,Symbol,Nil,Break) +) +where + +import Uniqs + +data Node = Function Node Node Node | + Application Node Node | + Cons Node Node | + Break Node | + Symbol Uniqs | + Nil + + +instance Eq Node where + (==) Nil Nil = True + (==) (Cons a1 d1) (Cons a2 d2) = (a1 == a2) && (d1 == d2) + (==) (Application a1 d1) (Application a2 d2) = (a1 == a2) && (d1 == d2) + (==) (Function a1 d1 c1) (Function a2 d2 c2) = (a1 == a2) && (d1 == d2) && (c1 == c2) + (==) (Symbol a) (Symbol b) = a == b + (==) a b = False + (/=) a b = not (a == b) + +instance Show Node where + show Nil = "Nil" + show (Cons a b) = "(Cons " ++ (show a) ++ " " ++ (show b) ++ ")" + show (Application a b) = "(Application " ++ (show a) ++ " " ++ (show b) ++ ")" + show (Function a b c) = "(Function " ++ (show a) ++ " " ++ (show b) ++ " " ++ (show c) ++ ")" + show (Break a) = "**" ++ (show a) + show (Symbol a) = "#" ++ (show a) \ No newline at end of file