[check that constructor arguments match and allow 'Unknown' types to match anything.
John Meacham <john@repetae.net>**20060323022136] hunk ./E/TypeCheck.hs 85
-    fc (ELit LitCons { litArgs = es, litType =  t}) = valid t >> mapM_ valid es >> (strong' t)
+    fc (ELit LitCons { litName = n, litArgs = es, litType =  t}) = do
+        valid t
+        es' <- mapM rfc es
+        t' <- strong' t
+        let sts = slotTypes dataTable n t
+            les = length es
+            lsts = length sts
+        unless (les == lsts || (les < lsts && isEPi t')) $ do
+            fail "constructor with wrong number of arguments"
+        zipWithM_ eq sts es'
+        return t'
hunk ./E/TypeCheck.hs 181
+    eq Unknown t2 = return t2
+    eq t1 Unknown = return t1