print (EmptyListExpr _) = ["[]"]
print (TupleExpr _ (e1, e2)) = ["(":print e1] ++ [",":print e2] ++ [")"]
-derive gEq Op2, Type
+derive gEq Op2
instance == Op2 where (==) o1 o2 = gEq{|*|} o1 o2
-instance == Type where (==) o1 o2 = gEq{|*|} o1 o2
import StdTuple
import StdList
import StdBool
+import GenEq
from Text import class Text(concat), instance Text String
instance MonadTrans (StateT Gamma) where
liftT m = StateT \s-> m >>= \a-> return (a, s)
-get = gets id
+get :== gets id
sem :: AST -> SemOutput
sem (AST vd fd) = case runStateT m ('Map'.newMap, getRandomStream 1) of
restoreGamma :: Gamma -> Env Void
restoreGamma (oldstate, _) = gets snd >>= \newr->put (oldstate, newr)
+
+derive gEq Type
+instance == Type where
+ (==) (IdType _) (IdType _) = True
+ (==) o1 o2 = gEq{|*|} o1 o2