) where
import Ubiq{-uitous-}
+import IdLoop -- paranoia checking
import CoreSyn
import PrelInfo ( mkListTy )
foldr_fun _ _ = returnSmpl Nothing
isConsFun :: SimplEnv -> CoreArg -> Bool
-isConsFun env (VarArg v) =
- case lookupUnfolding env v of
+isConsFun env (VarArg v)
+ = case lookupUnfolding env v of
GenForm _ _ (Lam (x,_) (Lam (y,_)
(Con con tys [VarArg x',VarArg y']))) _
| con == consDataCon && x==x' && y==y'
isConsFun env _ = False
isNilForm :: SimplEnv -> CoreArg -> Bool
-isNilForm env (VarArg v) =
- case lookupUnfolding env v of
+isNilForm env (VarArg v)
+ = case lookupUnfolding env v of
GenForm _ _ (CoTyApp (Var id) _) _
| id == nilDataCon -> True
ConForm id _ _
isNilForm env _ = False
getBuildForm :: SimplEnv -> CoreArg -> Maybe Id
-getBuildForm env (VarArg v) =
- case lookupUnfolding env v of
+getBuildForm env (VarArg v)
+ = case lookupUnfolding env v of
GenForm False _ _ _ -> Nothing
-- not allowed to inline :-(
GenForm _ _ (App (CoTyApp (Var bld) _) (VarArg g)) _
getAugmentForm :: SimplEnv -> CoreArg -> Maybe (Id,CoreArg)
-getAugmentForm env (VarArg v) =
- case lookupUnfolding env v of
+getAugmentForm env (VarArg v)
+ = case lookupUnfolding env v of
GenForm False _ _ _ -> Nothing
-- not allowed to inline :-(
GenForm _ _ (App (App (CoTyApp (Var bld) _)
:: SimplEnv
-> CoreArg
-> Maybe ([CoreArg],CoreArg)
-getListForm env (VarArg v) =
- case lookupUnfolding env v of
+getListForm env (VarArg v)
+ = case lookupUnfolding env v of
ConForm id _ [head,tail]
| id == consDataCon ->
case getListForm env tail of
getListForm env _ = Nothing
isInterestingArg :: SimplEnv -> CoreArg -> Bool
-isInterestingArg env (VarArg v) =
- case lookupUnfolding env v of
+isInterestingArg env (VarArg v)
+ = case lookupUnfolding env v of
GenForm False _ _ UnfoldNever -> False
GenForm _ _ exp guide -> True
_ -> False