[change a lot of the uses of LitCons to record syntax
John Meacham <john@repetae.net>**20061012022603] hunk ./DataConstructors.hs 137
-getProduct dataTable e | (ELit (LitCons cn _ _)) <- followAliases dataTable e, Just c <- getConstructor cn dataTable = f c where
+getProduct dataTable e | (ELit LitCons { litName = cn, litArgs = _, litType = _ }) <- followAliases dataTable e, Just c <- getConstructor cn dataTable = f c where
hunk ./DataConstructors.hs 266
-isAbsurd (ELit (LitCons n [] _)) | n == tc_Absurd = True
+isAbsurd (ELit LitCons { litName = n, litArgs = [], litType = _ }) | n == tc_Absurd = True
hunk ./DataConstructors.hs 276
-        g (ELit (LitCons n xs t)) (ELit (LitCons n' xs' t')) | n == n' = do
+        g (ELit LitCons { litName = n, litArgs = xs, litType = t }) (ELit LitCons { litName = n', litArgs = xs', litType = t' }) | n == n' = do
hunk ./DataConstructors.hs 306
-    f xs ys (ELit (LitCons n _ _)) _ | n `elem` xs = fail "Loop detected"
-    f xs ys a@(ELit (LitCons n _ _)) b | Just x <- followAlias dataTable a = g' (n:xs) ys x b
+    f xs ys (ELit LitCons { litName = n, litArgs = _, litType = _ }) _ | n `elem` xs = fail "Loop detected"
+    f xs ys a@(ELit LitCons { litName = n, litArgs = _, litType = _ }) b | Just x <- followAlias dataTable a = g' (n:xs) ys x b
hunk ./DataConstructors.hs 314
-    ELit (LitCons c [] _)
+    ELit LitCons { litName = c, litArgs = [], litType = _ }
hunk ./DataConstructors.hs 322
-    ELit (LitCons c [] _)
+    ELit LitCons { litName = c, litArgs = [], litType = _ }
hunk ./DataConstructors.hs 324
-          Just Constructor { conSlots = [st@(ELit (LitCons n [] _))] } <- getConstructor cn dataTable
+          Just Constructor { conSlots = [st@(ELit LitCons { litName = n, litArgs = [], litType = _ })] } <- getConstructor cn dataTable
hunk ./DataConstructors.hs 326
-    ELit (LitCons c [] _) | Just cn  <- getConstructor c dataTable -> fail $ "lookupCType: " ++ show cn
+    ELit LitCons { litName = c, litArgs = [], litType = _ } | Just cn  <- getConstructor c dataTable -> fail $ "lookupCType: " ++ show cn
hunk ./DataConstructors.hs 334
-followAlias dataTable (ELit (LitCons c ts e)) = do
+followAlias dataTable (ELit LitCons { litName = c, litArgs = ts, litType = e }) = do
hunk ./DataConstructors.hs 441
-        (ELit (LitCons _ xs _) ,ts') = fromPi $ runVarName $ do
+        (ELit LitCons { litName = _, litArgs = xs, litType = _ } ,ts') = fromPi $ runVarName $ do
hunk ./DataConstructors.hs 482
-constructionExpression dataTable n typ@(ELit (LitCons pn xs _))
+constructionExpression dataTable n typ@(ELit LitCons { litName = pn, litArgs = xs, litType = _ })
hunk ./DataConstructors.hs 502
-deconstructionExpression dataTable name typ@(ELit (LitCons pn xs _)) vs _vs' e | pn == conName pc = ans where
+deconstructionExpression dataTable name typ@(ELit LitCons { litName = pn, litArgs = xs, litType = _ }) vs _vs' e | pn == conName pc = ans where
hunk ./DataConstructors.hs 516
-slotTypes wdt n (ELit (LitCons pn xs _))
+slotTypes wdt n (ELit LitCons { litName = pn, litArgs = xs, litType = _ })
hunk ./DataConstructors.hs 573
-    f (ELit (LitCons n as _)) | (a:as') <- reverse as = f $ EAp (ELit (LitCons n (reverse as') undefined)) a
-    f (ELit (LitCons n [] _)) = return $ atom $ text $ show n
+    f (ELit LitCons { litName = n, litArgs = as, litType = _ }) | (a:as') <- reverse as = f $ EAp (ELit (LitCons n (reverse as') undefined)) a
+    f (ELit LitCons { litName = n, litArgs = [], litType = _ }) = return $ atom $ text $ show n
hunk ./E/Annotate.hs 80
-        let da (Alt (LitCons s vs t) e) = do
+        let da (Alt lc@LitCons { litName = s, litArgs = vs, litType = t } e) = do
hunk ./E/Annotate.hs 84
-                return $ Alt (LitCons s as t') e'
+                return $ Alt lc { litArgs = as, litType = t' } e'
hunk ./E/CPR.hs 119
-        f (ELit (LitCons n [] _)) = Tag [n]
-        f (ELit (LitCons n xs  _)) = Tup n (map g xs)
+        f (ELit LitCons { litName = n, litArgs = [], litType = _ }) = Tag [n]
+        f (ELit LitCons { litName = n, litArgs = xs, litType = _ }) = Tup n (map g xs)
hunk ./E/Demand.hs 319
-analyze ec@ECase { eCaseBind = b, eCaseAlts = [Alt lc@(LitCons h ts _) alt], eCaseDefault = Nothing } s = do
+analyze ec@ECase { eCaseBind = b, eCaseAlts = [Alt lc@LitCons { litName = h, litArgs = ts, litType = _ } alt], eCaseDefault = Nothing } s = do
hunk ./E/E.hs 36
-data Lit e t = LitInt { litNumber :: Number, litType :: t } |  LitCons { litName :: Name, litArgs :: [e], litType :: t }
+data Lit e t = LitInt { litNumber :: Number, litType :: t }
+    | LitCons  { litName :: Name, litArgs :: [e], litType :: t }
+--    | LitAlias { litName :: Name, litArgs :: [e], litType :: t, litAliasFor :: Maybe E }
hunk ./E/E.hs 45
-    showsPrec _ (LitCons n es t) = parens $  hsep (shows n:map shows es) <> showString "::" <> shows t
+    showsPrec _ LitCons { litName = n, litArgs = es, litType = t } = parens $  hsep (shows n:map shows es) <> showString "::" <> shows t
hunk ./E/E.hs 52
-        (LitCons a es e) -> do  e <- f e; return (LitCons a es e)
+        LitCons { litName = a, litArgs = es, litType = e } -> do  e <- f e; return LitCons { litName = a, litArgs = es, litType = e }
hunk ./E/E.hs 171
-litHead (LitCons s _ _) = LitCons s [] ()
+litHead LitCons { litName = s } = LitCons s [] ()
hunk ./E/E.hs 173
-litBinds ((LitCons _ xs _) ) = xs
+litBinds (LitCons { litArgs = xs } ) = xs
hunk ./E/E.hs 177
-patToLitEE (LitCons n xs t) = ELit $ LitCons n (map EVar xs) t
+patToLitEE LitCons { litName = n, litArgs = xs, litType = t } = ELit $ LitCons n (map EVar xs) t
hunk ./E/E.hs 297
-eCompat (ELit (LitCons n es t)) (ELit (LitCons n' es' t')) = n == n' && all (uncurry eCompat) (zip es es') && eCompat t t'
+eCompat (ELit LitCons { litName = n, litArgs = es, litType = t }) (ELit LitCons { litName = n', litArgs = es', litType = t' }) = n == n' && all (uncurry eCompat) (zip es es') && eCompat t t'
hunk ./E/E.hs 318
-toList (ELit (LitCons n [] _)) | vEmptyList == n = return []
+toList (ELit LitCons { litName = n, litArgs = [] }) | vEmptyList == n = return []
hunk ./E/Eval.hs 26
-    eval' (ELit (LitCons n es t)) [] = ELit $ LitCons n (map eval es) t
+    eval' (ELit LitCons { litName = n, litArgs = es, litType = t }) [] = ELit $ LitCons n (map eval es) t
hunk ./E/Eval.hs 73
-    eval' ds (ELit (LitCons n es t)) [] = do
+    eval' ds (ELit LitCons { litName = n, litArgs = es, litType = t }) [] = do
hunk ./E/FreeVars.hs 17
-getLitTyp (LitCons _ _ t) = t
+getLitTyp LitCons { litType = t } = t
hunk ./E/FreeVars.hs 74
-    fvLit (LitCons _ es e) = mconcat $ fv e:map fv es
+    fvLit LitCons { litArgs = es, litType = e } = mconcat $ fv e:map fv es
hunk ./E/FreeVars.hs 96
-    fvLit (LitCons _ es e) = mconcat $ fv e:map fv es
+    fvLit LitCons { litArgs = es, litType = e } = mconcat $ fv e:map fv es
hunk ./E/FromHs.hs 233
-        valToPat' (ELit (LitCons x ts t)) = ELit $ LitCons x [ EVar (tVr j (getType z)) | z <- ts | j <- [2,4 ..], j `notElem` map tvrIdent args]  t
+        valToPat' (ELit LitCons { litName = x, litArgs = ts, litType = t }) = ELit $ LitCons x [ EVar (tVr j (getType z)) | z <- ts | j <- [2,4 ..], j `notElem` map tvrIdent args]  t
hunk ./E/FromHs.hs 277
-                (ELit (LitCons x' vs' ct')) -> (x',vs',ct')
+                (ELit LitCons { litName = x', litArgs = vs', litType = ct' }) -> (x',vs',ct')
hunk ./E/LambdaLift.hs 88
-        f v env (ELit (LitCons _ as _)) = mapM_ (f (value True) env) as
+        f v env (ELit LitCons { litArgs = as }) = mapM_ (f (value True) env) as
hunk ./E/LetFloat.hs 70
-    g (ELit (LitCons n xs t)) = do
+    g (ELit LitCons { litName = n, litArgs = xs, litType = t }) = do
hunk ./E/LetFloat.hs 282
-            ma (Alt (LitCons n xs t)  b) = Alt (LitCons n (map m xs) t) b
+            ma (Alt LitCons { litName = n, litArgs = xs, litType = t }  b) = Alt (LitCons n (map m xs) t) b
hunk ./E/SSimplify.hs 124
-    f (ELit (LitCons n as t)) = arg $ do
+    f (ELit LitCons { litName = n, litArgs = as, litType = t }) = arg $ do
hunk ./E/SSimplify.hs 202
-mapLitBinds f (LitCons n es t) = LitCons n (map f es) t
+mapLitBinds f LitCons { litName = n, litArgs = es, litType = t } = LitCons n (map f es) t
hunk ./E/SSimplify.hs 204
-mapLitBindsM f (LitCons n es t) = do
+mapLitBindsM f LitCons { litName = n, litArgs = es, litType = t } = do
hunk ./E/SSimplify.hs 490
-    g (ELit (LitCons n es t)) inb = do
+    g (ELit LitCons { litName = n, litArgs = es, litType = t }) inb = do
hunk ./E/SSimplify.hs 576
-    doCase e t b as@(Alt (LitCons n _ _) _:_) (Just d) inb | Just ss <- getSiblings (so_dataTable sopts) n, length ss <= length as = do
+    doCase e t b as@(Alt LitCons { litName = n } _:_) (Just d) inb | Just ss <- getSiblings (so_dataTable sopts) n, length ss <= length as = do
hunk ./E/SSimplify.hs 579
-    doCase e t b as (Just d) inb | te /= tWorld__, (ELit (LitCons cn _ _)) <- followAliases dt te, Just Constructor { conChildren = Just cs } <- getConstructor cn dt, length as == length cs - 1 || (False && length as < length cs && isAtomic d)  = do
-        let ns = [ n | Alt ~(LitCons n _ _) _ <- as ]
+    doCase e t b as (Just d) inb | te /= tWorld__, (ELit LitCons { litName = cn }) <- followAliases dt te, Just Constructor { conChildren = Just cs } <- getConstructor cn dt, length as == length cs - 1 || (False && length as < length cs && isAtomic d)  = do
+        let ns = [ n | Alt ~LitCons { litName = n } _ <- as ]
hunk ./E/SSimplify.hs 637
-                na = NotAmong [ n | Alt (LitCons n _ _) _ <- as]
+                na = NotAmong [ n | Alt LitCons { litName = n } _ <- as]
hunk ./E/SSimplify.hs 644
-            da (Alt (LitCons n ns t) ae) = do
+            da (Alt LitCons { litName = n, litArgs = ns, litType = t } ae) = do
hunk ./E/SSimplify.hs 685
-    match m@(LitCons c xs _) ((Alt (LitCons c' bs _) e):rs) d@(b,_) | c == c' = do
+    match m@LitCons { litName = c, litArgs = xs } ((Alt LitCons { litName = c', litArgs = bs } e):rs) d@(b,_) | c == c' = do
hunk ./E/SSimplify.hs 724
-                knowLit (LitCons c _ _) = KnowIsCon c
+                knowLit LitCons { litName = c } = KnowIsCon c
hunk ./E/SSimplify.hs 886
-            g n (Alt (LitCons c' _ _) e:rs) | KnowIsCon c <- l = if c == c' then f n e else g n rs
+            g n (Alt LitCons { litName = c' } e:rs) | KnowIsCon c <- l = if c == c' then f n e else g n rs
hunk ./E/SSimplify.hs 888
-            g n (Alt (LitCons c _ _) e:rs) | KnowNotOneOf na <- l = if c `elem` na then g n rs else f n e >>= \n' -> g n' rs
+            g n (Alt LitCons { litName = c } e:rs) | KnowNotOneOf na <- l = if c `elem` na then g n rs else f n e >>= \n' -> g n' rs
hunk ./E/Show.hs 65
-        f (LitCons n [] t) | t == tTag = return $  atom $ (const_color (text $ show n))
-        f (LitCons s es _) | Just n <- fromTupname s , n == length es = do
+        f LitCons { litName = n, litArgs = [], litType = t } | t == tTag = return $  atom $ (const_color (text $ show n))
+        f LitCons { litName = s, litArgs = es } | Just n <- fromTupname s , n == length es = do
hunk ./E/Show.hs 69
-        f (LitCons s es _) | Just n <- fromUnboxedNameTuple s, n == length es = do
+        f LitCons { litName = s, litArgs = es } | Just n <- fromUnboxedNameTuple s, n == length es = do
hunk ./E/Show.hs 79
-        f (LitCons n [] _) | dc_EmptyList == n = return $ atom $ text "[]"
+        f LitCons { litName = n, litArgs = [] } | dc_EmptyList == n = return $ atom $ text "[]"
hunk ./E/Show.hs 87
-        f (LitCons s es t) = do
+        f LitCons { litName = s, litArgs = es, litType = t } = do
hunk ./E/Subst.hs 56
-litSMapM f (LitCons s es t) = do
+litSMapM f LitCons { litName = s, litArgs = es, litType = t } = do
hunk ./E/Subst.hs 102
-        let da (Alt (LitCons s vs t) e) = do
+        let da (Alt LitCons { litName = s, litArgs = vs, litType = t } e) = do
hunk ./E/Subst.hs 220
-        let da (Alt (LitCons s vs t) e) = do
+        let da (Alt LitCons { litName = s, litArgs = vs, litType = t } e) = do
hunk ./E/Subst.hs 249
-    litSMapM (LitCons s es t) = do
+    litSMapM LitCons { litName = s, litArgs = es, litType = t } = do
hunk ./E/Traverse.hs 56
-    z (ELit (LitCons n es t)) = do t' <- g t; es' <- mapM f es; return $ ELit (LitCons n es' t')
+    z (ELit LitCons { litName = n, litArgs = es, litType = t }) = do t' <- g t; es' <- mapM f es; return $ ELit (LitCons n es' t')
hunk ./E/Traverse.hs 70
-    mapmAlt (Alt (LitCons n xs t) e) = do
+    mapmAlt (Alt LitCons { litName = n, litArgs = xs, litType = t } e) = do
hunk ./E/Traverse.hs 99
-    f  (ELit (LitCons n xs t)) = do
+    f  (ELit LitCons { litName = n, litArgs = xs, litType = t }) = do
hunk ./E/Traverse.hs 138
-    da (Alt (LitCons n xs t) l) = do
+    da (Alt LitCons { litName = n, litArgs = xs, litType = t } l) = do
hunk ./E/TypeAnalysis.hs 89
-toLit (ELit (LitCons n ts _)) = return (n,ts)
+toLit (ELit LitCons { litName = n, litArgs = ts }) = return (n,ts)
hunk ./E/TypeAnalysis.hs 154
-calcAlt env v (Alt (LitCons n xs _) e) = do
+calcAlt env v (Alt LitCons { litName = n, litArgs = xs } e) = do
hunk ./E/TypeAnalysis.hs 215
-typConstant (ELit (LitCons n xs _)) = do
+typConstant (ELit LitCons { litName = n, litArgs = xs }) = do
hunk ./E/TypeAnalysis.hs 236
-    f xs (alt@(Alt (LitCons n _ _) _):rs) | not (n `vmapMember` ns) = f xs rs
+    f xs (alt@(Alt LitCons { litName = n } _):rs) | not (n `vmapMember` ns) = f xs rs
hunk ./E/TypeAnalysis.hs 341
-        valToPat' (ELit (LitCons x ts t)) = LitCons x [ z | ~(EVar z) <- ts ] t
+        valToPat' (ELit LitCons { litName = x, litArgs = ts, litType = t }) = LitCons x [ z | ~(EVar z) <- ts ] t
hunk ./E/Values.hs 160
-    f (ELit (LitCons n _ _)) = vTag n
+    f (ELit LitCons { litName = n }) = vTag n
hunk ./E/Values.hs 186
-    f n (ELit (LitCons x y _)) t = (n,ELit (LitCons x y t),id)
+    f n (ELit LitCons { litName = x, litArgs = y }) t = (n,ELit (LitCons x y t),id)
hunk ./E/Values.hs 213
-isFullyConst (ELit (LitCons _ [] _)) = True
-isFullyConst (ELit (LitCons _ xs _)) = all isFullyConst xs
+isFullyConst (ELit LitCons { litArgs = [] }) = True
+isFullyConst (ELit LitCons { litArgs = xs }) = all isFullyConst xs
hunk ./E/Values.hs 261
-whnfOrBot (ELit (LitCons _ xs _)) = all isAtomic xs
+whnfOrBot (ELit LitCons { litArgs = xs }) = all isAtomic xs
hunk ./Grin/FromE.hs 125
-    toty (ELit (LitCons n es ty)) |  ty == eHash, TypeConstructor <- nameType n, Just _ <- fromUnboxedNameTuple n = (tuple (map (toType (TyPtr TyNode) ) (filter shouldKeep es)))
-    toty (ELit (LitCons n [] es)) |  es == eHash, RawType <- nameType n = (Ty $ toAtom (show n))
+    toty (ELit LitCons { litName = n, litArgs = es, litType = ty }) |  ty == eHash, TypeConstructor <- nameType n, Just _ <- fromUnboxedNameTuple n = (tuple (map (toType (TyPtr TyNode) ) (filter shouldKeep es)))
+    toty (ELit LitCons { litName = n, litArgs = [], litType = es }) |  es == eHash, RawType <- nameType n = (Ty $ toAtom (show n))
hunk ./Grin/FromE.hs 273
-    conv (ELit lc@(LitCons n es _)) | Just nn <- getName lc = (Const (NodeC nn (map conv es)))
+    conv (ELit lc@LitCons { litName = n, litArgs = es }) | Just nn <- getName lc = (Const (NodeC nn (map conv es)))
hunk ./Grin/FromE.hs 285
-getName' dataTable v@(LitCons n es _)
+getName' dataTable v@LitCons { litName = n, litArgs = es }
hunk ./Grin/FromE.hs 300
-    toVal (TVr { tvrIdent = num, tvrType = (ELit (LitCons n [] es))}) | es == eHash, RawType <- nameType n  = Var (V num) (Ty $ toAtom (show n))
+    toVal (TVr { tvrIdent = num, tvrType = (ELit LitCons { litName = n, litArgs = [], litType = es })}) | es == eHash, RawType <- nameType n  = Var (V num) (Ty $ toAtom (show n))
hunk ./Grin/FromE.hs 417
-    ce ECase { eCaseScrutinee = e, eCaseAlts = [Alt (LitCons n xs _) wh] } | Just _ <- fromUnboxedNameTuple n, DataConstructor <- nameType n  = do
+    ce ECase { eCaseScrutinee = e, eCaseAlts = [Alt LitCons { litName = n, litArgs = xs } wh] } | Just _ <- fromUnboxedNameTuple n, DataConstructor <- nameType n  = do
hunk ./Grin/FromE.hs 425
-    ce ECase { eCaseScrutinee = e, eCaseBind = b, eCaseAlts = as, eCaseDefault = d } | (ELit (LitCons n [] _)) <- getType e, RawType <- nameType n = do
+    ce ECase { eCaseScrutinee = e, eCaseBind = b, eCaseAlts = as, eCaseDefault = d } | (ELit LitCons { litName = n, litArgs = [] }) <- getType e, RawType <- nameType n = do
hunk ./Grin/FromE.hs 451
-    cp (Alt lc@(LitCons n es _) e) = do
+    cp (Alt lc@LitCons { litName = n, litArgs = es } e) = do
hunk ./Grin/FromE.hs 456
-    cp'' (Alt (LitInt i (ELit (LitCons nn [] _))) e) = do
+    cp'' (Alt (LitInt i (ELit LitCons { litName = nn, litArgs = [] })) e) = do
hunk ./Grin/FromE.hs 611
-    constant (ELit lc@(LitCons n es _)) | Just es <- mapM constant (filter (shouldKeep . getType) es), Just nn <- getName lc = (return $ Const (NodeC nn es))
+    constant (ELit lc@LitCons { litName = n, litArgs = es }) | Just es <- mapM constant (filter (shouldKeep . getType) es), Just nn <- getName lc = (return $ Const (NodeC nn es))
hunk ./Grin/FromE.hs 619
-    con v@(ELit (LitCons n es _))
+    con v@(ELit LitCons { litName = n, litArgs = es })
hunk ./Grin/FromE.hs 645
-fromRawType (ELit (LitCons tname [] _))
+fromRawType (ELit LitCons { litName = tname, litArgs = [] })
hunk ./Grin/MangleE.hs 108
-        f (ELit (LitCons _ xs _)) = mapM_ f xs
+        f (ELit LitCons { litArgs = xs }) = mapM_ f xs
hunk ./data/PrimitiveOperators-in.hs 21
-    ELit (LitCons n1 [] _) = t1
-    ELit (LitCons n2 [] _) = t2
+    ELit LitCons { litName = n1, litArgs = [] } = t1
+    ELit LitCons { litName = n2, litArgs = [] } = t2