[add Jhc@.Box, a supertype that can represent any boxed value
John Meacham <john@repetae.net>**20061006063804] hunk ./DataConstructors.hs 176
+-- | Jhc@.Box can hold any boxed value (something whose type inhabits *, or is a function)
+-- so, there is a bit of subtyping that goes on.
+
+tbox = Constructor {
+            conName = tc_Box,
+            conType = eStar,
+            conSlots = [],
+            conDeriving = [],
+            conExpr = tBox,
+            conAlias = False,
+            conVirtual = Nothing,
+            conInhabits = tStar,
+            conChildren = Nothing
+    }
+
hunk ./DataConstructors.hs 264
+typesCompatable _ box b | box == tBox, canBeBox b = return ()
+typesCompatable _ a box | box == tBox, canBeBox a = return ()
hunk ./DataConstructors.hs 342
-dataTablePrims = DataTable $ Map.fromList ([ (conName x,x) | x <- tabsurd:tarrow:primitiveTable ] ++ worlds)
+dataTablePrims = DataTable $ Map.fromList ([ (conName x,x) | x <- tbox:tabsurd:tarrow:primitiveTable ] ++ worlds)
hunk ./E/E.hs 230
+tBox = ELit (LitCons tc_Box [] eStar)
hunk ./E/TypeCheck.hs 1
-module E.TypeCheck(eAp, sortStarLike, sortTypeLike,  sortTermLike, inferType, typeInfer, typeInfer', match) where
+module E.TypeCheck(
+    canBeBox,
+    eAp,
+    inferType,
+    match,
+    sortStarLike,
+    sortTermLike,
+    sortTypeLike,
+    typeInfer',
+    typeInfer
+    ) where
hunk ./E/TypeCheck.hs 33
+canBeBox EPi {} = True
+canBeBox x | getType x == eStar = True
+canBeBox _ = False
hunk ./E/TypeCheck.hs 199
+    eq box t2 | box == tBox, canBeBox t2 = return t2
+    eq t1 box | box == tBox, canBeBox t1 = return t1
hunk ./Name/Names.hs 70
-tc_Arrow = toName TypeConstructor ("Jhc@","->")
+tc_Box = toName TypeConstructor    ("Jhc@","Box")
+tc_Arrow = toName TypeConstructor  ("Jhc@","->")
hunk ./Name/Names.hs 73
-tc_JumpPoint = toName TypeConstructor ("Jhc.JumpPoint","JumpPoint")
-tc_IOError = toName TypeConstructor ("Prelude.IOError","IOError")
+tc_JumpPoint = toName TypeConstructor   ("Jhc.JumpPoint","JumpPoint")
+tc_IOError = toName TypeConstructor     ("Prelude.IOError","IOError")