print BoolType = print "Bool"
print CharType = print "Char"
print VoidType = print "Void"
- print (t1 ->> t2) = print t1 ++ [" -> ":print t2]
+ print (t1 ->> t2) = ["(":print t1 ++ [" -> ":print t2]] ++ [")"]
instance print String where
print s = [s]
print FieldFst = print "fst"
instance print VarDef where
- print (VarDef i fs) = printersperse "." [i:flatten $ map print fs]
+ print (VarDef i fs) = printersperse "." [i:printersperse "" fs]
instance toString Op2 where
toString o = case o of
BiLesserEq = "<="; BiGreaterEq = ">="; BiUnEqual = "!=";
BiAnd = "&&"; BiOr = "||"; BiCons = ":"
+instance toString Op1 where
+ toString UnNegation = "!"
+ toString UnMinus = "-"
+
instance print Expr where
print (VarExpr _ vd) = print vd
print (Op2Expr _ e1 o e2) = ["(":print e1] ++
derive gEq Op2
instance == Op2 where (==) o1 o2 = gEq{|*|} o1 o2
+
+instance zero Pos where
+ zero = {line=0, col=0}
+
+derive gEq Op1
+instance == Op1 where (==) o1 o2 = gEq{|*|} o1 o2
+instance < Op2 where (<) o1 o2 = toString o1 < toString o2
+instance < Op1 where (<) o1 o2 = toString o1 < toString o2