[add Support.Tuple instances to Grin and E types
John Meacham <john@repetae.net>**20060128024303] hunk ./E/Values.hs 12
+import Support.Tuple
hunk ./E/Values.hs 25
+instance Tuple E where
+    tupleNil = vUnit
+    tupleMany es = ELit $ LitCons (nameTuple DataConstructor (length es)) es (ltTuple ts) where 
+        ts = map getType es
+
hunk ./E/Values.hs 32
-eTuple []  = vUnit
-eTuple [e] = e
-eTuple es = ELit $ LitCons (nameTuple DataConstructor (length es)) es (ltTuple ts) where
-    ts = map getType es
+eTuple :: [E] -> E
+eTuple = tuple
hunk ./Grin/Grin.hs 63
-import Support.CanType
hunk ./Grin/Grin.hs 67
-import Number
hunk ./Grin/Grin.hs 68
+import Number
+import Support.CanType
+import Support.Tuple
hunk ./Grin/Grin.hs 630
+
+instance Tuple Val where
+    tupleMany vs = Tup vs
+
+instance Tuple Ty where
+    tupleMany ts = TyTup ts
+
+
+instance FromTuple Val where
+    fromTuple (Tup vs) = vs
+    fromTuple v = [v]
+
+instance FromTuple Ty where
+    fromTuple (TyTup ts) = ts
+    fromTuple v = [v]
+
+
+instance Tuple Item where
+    tupleMany vs = TupledValue vs
+
+instance FromTuple Item where
+    fromTuple (TupledValue ts) = ts
+    fromTuple x = [x]
+
hunk ./Support/Tuple.hs 2
+
+import List(intersperse)