[helpers for building types
martin.hofmann@uni-bamberg.de**20091007132807] hunk ./src/Context/ContextBuilder.hs 675
-foldAppT :: Type -> [Type] -> Type
-foldAppT t ts = foldl' AppT t ts
hunk ./src/Syntax/Types.hs 13
-    sectionType, argumentType, unArrowT, mkArrowT, mkListT,
+    sectionType, argumentType, unArrowT, mkArrowT, mkListT, mkTupT, foldAppT,
hunk ./src/Syntax/Types.hs 23
-import Data.List (union, nub, intersect, intersectBy, (\\), find)
+import Data.List (union, nub, intersect, intersectBy, (\\), find, foldl')
hunk ./src/Syntax/Types.hs 31
-    typeOf :: t -> Type 
+    typeOf :: t -> Type
hunk ./src/Syntax/Types.hs 118
+-- Modifying Types
+--------------------------------------------------------------------------------
+ 
+--equalTys (VarT _) = 
+--equalTys (ConT n1) (ConT n2)         = n1 == n2
+---- tuples
+--equalTys (TupleT i1) (TupleT i2)     = i1 == i2
+--equalTys (TupleT i) (ConT n)         = isTuple n i
+--equalTys (ConT n)(TupleT i)          = isTuple n i
+---- lists
+--equalTys ListT ListT                 = True
+--equalTys ListT (ConT n)              = isNil n
+--equalTys (ConT n) ListT              = isNil n
+--
+--equalTys ArrowT ArrowT               = True
+--equalTys (ForallT n1 c1 t1) (ForallT n2 c2 t2)  = 
+--    (n1 == (n1 `intersect` n2)) &&
+--    (equalTys t1 t2) &&
+--    (c1 == (intersectBy equalTys c1 c2))
+--equalTys (AppT t11 t12) (AppT t21 t22) = 
+--    (equalTys t11 t21) && (equalTys t12 t22)
+--equalTys _ _                         = False
+--------------------------------------------------------------------------------
hunk ./src/Syntax/Types.hs 172
+
hunk ./src/Syntax/Types.hs 181
+mkTupT :: [Type] -> Type
+mkTupT l = foldAppT (TupleT . length $ l) l
+
+foldAppT :: Type -> [Type] -> Type
+foldAppT t ts = foldl' AppT t ts
+
hunk ./src/Syntax/Types.hs 195
-unfoldAppTargs = tail . unfoldAppT
hunk ./src/Syntax/Types.hs 213
+unfoldAppTargs = tail . unfoldAppT