-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/Check.ag) module UHC.Light.Compiler.Core.Check(NotYetTransformed (..), NotYetTransformedS , cmodCheck', Inh_CodeAGItf (..), Syn_CodeAGItf (..)) where import UHC.Light.Compiler.Base.HsName.Builtin import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.Opts import UHC.Light.Compiler.Ty import UHC.Light.Compiler.Error import UHC.Light.Compiler.Gam import UHC.Light.Compiler.Gam.DataGam import UHC.Light.Compiler.Base.TermLike import UHC.Light.Compiler.AbstractCore import UHC.Light.Compiler.Core import Data.Maybe import qualified Data.Map as Map import qualified Data.Set as Set import qualified UHC.Util.FastSeq as Seq import qualified UHC.Util.Rel as Rel import Control.Applicative import UHC.Util.Pretty import UHC.Light.Compiler.Module.ImportExport deriving instance Typeable Syn_CodeAGItf -- | What not yet has been transformed in the given Core, absence means some aspect has been transformed everywhere data NotYetTransformed = NotYetTransformed_LambdaLifted | NotYetTransformed_ANormal deriving (Eq, Ord, Show, Enum, Bounded) type NotYetTransformedS = Set.Set NotYetTransformed cmodCheck' :: Inh_CodeAGItf -> CModule -> Syn_CodeAGItf cmodCheck' inh cmod = t where t = wrap_CodeAGItf (sem_CodeAGItf (CodeAGItf_AGItf cmod)) inh type UndefNmMp = Map.Map MetaLev [ACoreBindRef] undefmpUnion :: UndefNmMp -> UndefNmMp -> UndefNmMp undefmpUnion = Map.unionWith (++) -- CAlt -------------------------------------------------------- {- visit 0: inherited attributes: evalCtx : EvalCtx lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Alt: child pat : CPat child expr : CExpr visit 0: local whatAbove : {WhatExpr} local lev : _ -} -- cata sem_CAlt :: CAlt -> T_CAlt sem_CAlt (CAlt_Alt _pat _expr) = (sem_CAlt_Alt (sem_CPat _pat) (sem_CExpr _expr)) -- semantic domain type T_CAlt = EvalCtx -> Int -> EHCOpts -> ( ErrSq,Bool,UndefNmMp) sem_CAlt_Alt :: T_CPat -> T_CExpr -> T_CAlt sem_CAlt_Alt pat_ expr_ = (\ _lhsIevalCtx _lhsIlev _lhsIopts -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev + 1) of { _lev -> (case (_lev) of { _exprOlev -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (True) of { _exprOisTopTup -> (case (True) of { _exprOisTopApp -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_lhsIopts) of { _patOopts -> (case (_lev) of { _patOlev -> (case (pat_ _patOlev _patOopts) of { ( _patIerrs,_patIfldNmL,_patIisFreeOfLam,_patIundefNmMp) -> (case (_patIerrs `Seq.union` _exprIerrs) of { _lhsOerrs -> (case (_patIisFreeOfLam && _exprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_patIundefNmMp `undefmpUnion` _exprIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) -- CAltL ------------------------------------------------------- {- visit 0: inherited attributes: evalCtx : EvalCtx lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CAlt child tl : CAltL alternative Nil: -} -- cata sem_CAltL :: CAltL -> T_CAltL sem_CAltL list = (Prelude.foldr sem_CAltL_Cons sem_CAltL_Nil (Prelude.map sem_CAlt list)) -- semantic domain type T_CAltL = EvalCtx -> Int -> EHCOpts -> ( ErrSq,Bool,UndefNmMp) sem_CAltL_Cons :: T_CAlt -> T_CAltL -> T_CAltL sem_CAltL_Cons hd_ tl_ = (\ _lhsIevalCtx _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _tlOopts -> (case (_lhsIlev) of { _tlOlev -> (case (_lhsIevalCtx) of { _tlOevalCtx -> (case (tl_ _tlOevalCtx _tlOlev _tlOopts) of { ( _tlIerrs,_tlIisFreeOfLam,_tlIundefNmMp) -> (case (_lhsIopts) of { _hdOopts -> (case (_lhsIlev) of { _hdOlev -> (case (_lhsIevalCtx) of { _hdOevalCtx -> (case (hd_ _hdOevalCtx _hdOlev _hdOopts) of { ( _hdIerrs,_hdIisFreeOfLam,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) })) sem_CAltL_Nil :: T_CAltL sem_CAltL_Nil = (\ _lhsIevalCtx _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) -- CBind ------------------------------------------------------- {- visit 0: inherited attributes: evalCtx : EvalCtx isGlobal : Bool letBindingsCateg : CBindCateg lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq hasMain : Bool isFreeOfLam : Bool modDefsRel : ModEntRel nm : HsName notYetTransformed : NotYetTransformedS undefNmMp : UndefNmMp alternatives: alternative Bind: child nm : {HsName} child bindAspects : CBoundL -} -- cata sem_CBind :: CBind -> T_CBind sem_CBind (CBind_Bind _nm _bindAspects) = (sem_CBind_Bind _nm (sem_CBoundL _bindAspects)) -- semantic domain type T_CBind = EvalCtx -> Bool -> CBindCateg -> Int -> EHCOpts -> ( ErrSq,Bool,Bool,ModEntRel,HsName,NotYetTransformedS,UndefNmMp) sem_CBind_Bind :: HsName -> T_CBoundL -> T_CBind sem_CBind_Bind nm_ bindAspects_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIletBindingsCateg _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _bindAspectsOopts -> (case (_lhsIlev) of { _bindAspectsOlev -> (case (_lhsIletBindingsCateg) of { _bindAspectsOletBindingsCateg -> (case (_lhsIisGlobal) of { _bindAspectsOisGlobal -> (case (_lhsIevalCtx) of { _bindAspectsOevalCtx -> (case (nm_) of { _bindAspectsOnm -> (case (bindAspects_ _bindAspectsOevalCtx _bindAspectsOisGlobal _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOnm _bindAspectsOopts) of { ( _bindAspectsIerrs,_bindAspectsIisFreeOfLam,_bindAspectsInotYetTransformed,_bindAspectsIundefNmMp) -> (case (_bindAspectsIerrs) of { _lhsOerrs -> (case (nm_ == hsnMain) of { _lhsOhasMain -> (case (_bindAspectsIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (let o = IdOcc nm_ IdOcc_Val in Rel.fromList [ (hsnQualified (ioccNm o), ModEnt (ioccKind o) o Set.empty emptyRange) ]) of { _lhsOmodDefsRel -> (case (nm_) of { _lhsOnm -> (case (_bindAspectsInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_bindAspectsIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnm,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) })) -- CBindAnn ---------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Coe: child coe : {()} -} -- cata sem_CBindAnn :: CBindAnn -> T_CBindAnn sem_CBindAnn (CBindAnn_Coe _coe) = (sem_CBindAnn_Coe _coe) -- semantic domain type T_CBindAnn = Int -> EHCOpts -> ( ErrSq,Bool,UndefNmMp) sem_CBindAnn_Coe :: (()) -> T_CBindAnn sem_CBindAnn_Coe coe_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) -- CBindAnnL --------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CBindAnn child tl : CBindAnnL alternative Nil: -} -- cata sem_CBindAnnL :: CBindAnnL -> T_CBindAnnL sem_CBindAnnL list = (Prelude.foldr sem_CBindAnnL_Cons sem_CBindAnnL_Nil (Prelude.map sem_CBindAnn list)) -- semantic domain type T_CBindAnnL = Int -> EHCOpts -> ( ErrSq,Bool,UndefNmMp) sem_CBindAnnL_Cons :: T_CBindAnn -> T_CBindAnnL -> T_CBindAnnL sem_CBindAnnL_Cons hd_ tl_ = (\ _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _tlOopts -> (case (_lhsIlev) of { _tlOlev -> (case (tl_ _tlOlev _tlOopts) of { ( _tlIerrs,_tlIisFreeOfLam,_tlIundefNmMp) -> (case (_lhsIopts) of { _hdOopts -> (case (_lhsIlev) of { _hdOlev -> (case (hd_ _hdOlev _hdOopts) of { ( _hdIerrs,_hdIisFreeOfLam,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) })) sem_CBindAnnL_Nil :: T_CBindAnnL sem_CBindAnnL_Nil = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) -- CBindL ------------------------------------------------------ {- visit 0: inherited attributes: evalCtx : EvalCtx isGlobal : Bool letBindingsCateg : CBindCateg lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq hasMain : Bool isFreeOfLam : Bool modDefsRel : ModEntRel notYetTransformed : NotYetTransformedS undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CBind child tl : CBindL alternative Nil: -} -- cata sem_CBindL :: CBindL -> T_CBindL sem_CBindL list = (Prelude.foldr sem_CBindL_Cons sem_CBindL_Nil (Prelude.map sem_CBind list)) -- semantic domain type T_CBindL = EvalCtx -> Bool -> CBindCateg -> Int -> EHCOpts -> ( ErrSq,Bool,Bool,ModEntRel,NotYetTransformedS,UndefNmMp) sem_CBindL_Cons :: T_CBind -> T_CBindL -> T_CBindL sem_CBindL_Cons hd_ tl_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIletBindingsCateg _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _tlOopts -> (case (_lhsIlev) of { _tlOlev -> (case (_lhsIletBindingsCateg) of { _tlOletBindingsCateg -> (case (_lhsIisGlobal) of { _tlOisGlobal -> (case (_lhsIevalCtx) of { _tlOevalCtx -> (case (tl_ _tlOevalCtx _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOopts) of { ( _tlIerrs,_tlIhasMain,_tlIisFreeOfLam,_tlImodDefsRel,_tlInotYetTransformed,_tlIundefNmMp) -> (case (_lhsIopts) of { _hdOopts -> (case (_lhsIlev) of { _hdOlev -> (case (_lhsIletBindingsCateg) of { _hdOletBindingsCateg -> (case (_lhsIisGlobal) of { _hdOisGlobal -> (case (_lhsIevalCtx) of { _hdOevalCtx -> (case (hd_ _hdOevalCtx _hdOisGlobal _hdOletBindingsCateg _hdOlev _hdOopts) of { ( _hdIerrs,_hdIhasMain,_hdIisFreeOfLam,_hdImodDefsRel,_hdInm,_hdInotYetTransformed,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIhasMain || _tlIhasMain) of { _lhsOhasMain -> (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_hdImodDefsRel `Rel.union` _tlImodDefsRel) of { _lhsOmodDefsRel -> (case (_hdInotYetTransformed `Set.union` _tlInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CBindL_Nil :: T_CBindL sem_CBindL_Nil = (\ _lhsIevalCtx _lhsIisGlobal _lhsIletBindingsCateg _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) })) -- CBound ------------------------------------------------------ {- visit 0: inherited attributes: evalCtx : EvalCtx isGlobal : Bool isTopApp : Bool isTopTup : Bool letBindingsCateg : CBindCateg lev : Int nm : HsName opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool isSimple : Bool notYetTransformed : NotYetTransformedS undefNmMp : UndefNmMp alternatives: alternative Bind: child expr : CExpr visit 0: local whatAbove : {WhatExpr} local isSimple : _ local bindNotYetTransformed : _ alternative Val: child aspectKeyS : {ACoreBindAspectKeyS} child mlev : {MetaLev} child lbl : {CLbl} child expr : CExpr visit 0: local whatAbove : {WhatExpr} local isSimple : _ local bindNotYetTransformed : _ alternative Ty: child aspectKeyS : {ACoreBindAspectKeyS} child ty : {Ty} alternative FFE: child callconv : {FFIWay} child expEnt : {ForeignEnt} child expr : CExpr child ty : {Ty} visit 0: local whatAbove : {WhatExpr} -} -- cata sem_CBound :: CBound -> T_CBound sem_CBound (CBound_Bind _expr) = (sem_CBound_Bind (sem_CExpr _expr)) sem_CBound (CBound_Val _aspectKeyS _mlev _lbl _expr) = (sem_CBound_Val _aspectKeyS _mlev _lbl (sem_CExpr _expr)) sem_CBound (CBound_Ty _aspectKeyS _ty) = (sem_CBound_Ty _aspectKeyS _ty) sem_CBound (CBound_FFE _callconv _expEnt _expr _ty) = (sem_CBound_FFE _callconv _expEnt (sem_CExpr _expr) _ty) -- semantic domain type T_CBound = EvalCtx -> Bool -> Bool -> Bool -> CBindCateg -> Int -> HsName -> EHCOpts -> ( ErrSq,Bool,Bool,NotYetTransformedS,UndefNmMp) sem_CBound_Bind :: T_CExpr -> T_CBound sem_CBound_Bind expr_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIisTopApp _lhsIisTopTup _lhsIletBindingsCateg _lhsIlev _lhsInm _lhsIopts -> (case (ExprIsBind _lhsInm) of { _whatAbove -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (True) of { _exprOisTopTup -> (case (True) of { _exprOisTopApp -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs) of { _lhsOerrs -> (case (_exprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (case _exprIwhatBelow of ExprIsVar _ -> True ExprIsInt _ -> True ExprIsOtherWHNF -> True _ -> False) of { _isSimple -> (case (_isSimple) of { _lhsOisSimple -> (case (if whatExprIsLam _exprIwhatBelow then if _lhsIisGlobal && _exprIlamBodyIsFreeOfLam then Set.empty else Set.singleton NotYetTransformed_LambdaLifted else if _exprIisFreeOfLam then Set.empty else Set.singleton NotYetTransformed_LambdaLifted) of { _bindNotYetTransformed -> (case (Set.unions [_bindNotYetTransformed, _exprInotYetTransformed]) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CBound_Val :: ACoreBindAspectKeyS -> MetaLev -> CLbl -> T_CExpr -> T_CBound sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIisTopApp _lhsIisTopTup _lhsIletBindingsCateg _lhsIlev _lhsInm _lhsIopts -> (case (ExprIsBind _lhsInm) of { _whatAbove -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_lhsIisTopTup) of { _exprOisTopTup -> (case (_lhsIisTopApp) of { _exprOisTopApp -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs) of { _lhsOerrs -> (case (_exprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (case _exprIwhatBelow of ExprIsVar _ -> True ExprIsInt _ -> True ExprIsOtherWHNF -> True _ -> False) of { _isSimple -> (case (_isSimple) of { _lhsOisSimple -> (case (if whatExprIsLam _exprIwhatBelow then if _lhsIisGlobal && _exprIlamBodyIsFreeOfLam then Set.empty else Set.singleton NotYetTransformed_LambdaLifted else if _exprIisFreeOfLam then Set.empty else Set.singleton NotYetTransformed_LambdaLifted) of { _bindNotYetTransformed -> (case (Set.unions [_bindNotYetTransformed, _exprInotYetTransformed]) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CBound_Ty :: ACoreBindAspectKeyS -> Ty -> T_CBound sem_CBound_Ty aspectKeyS_ ty_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIisTopApp _lhsIisTopTup _lhsIletBindingsCateg _lhsIlev _lhsInm _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOisSimple -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) })) sem_CBound_FFE :: FFIWay -> ForeignEnt -> T_CExpr -> Ty -> T_CBound sem_CBound_FFE callconv_ expEnt_ expr_ ty_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIisTopApp _lhsIisTopTup _lhsIletBindingsCateg _lhsIlev _lhsInm _lhsIopts -> (case (ExprIsLam 0 Nothing) of { _whatAbove -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (True) of { _exprOisTopTup -> (case (True) of { _exprOisTopApp -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs) of { _lhsOerrs -> (case (_exprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOisSimple -> (case (_exprInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOisSimple,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) })) -- CBoundL ----------------------------------------------------- {- visit 0: inherited attributes: evalCtx : EvalCtx isGlobal : Bool letBindingsCateg : CBindCateg lev : Int nm : HsName opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool notYetTransformed : NotYetTransformedS undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CBound child tl : CBoundL alternative Nil: -} -- cata sem_CBoundL :: CBoundL -> T_CBoundL sem_CBoundL list = (Prelude.foldr sem_CBoundL_Cons sem_CBoundL_Nil (Prelude.map sem_CBound list)) -- semantic domain type T_CBoundL = EvalCtx -> Bool -> CBindCateg -> Int -> HsName -> EHCOpts -> ( ErrSq,Bool,NotYetTransformedS,UndefNmMp) sem_CBoundL_Cons :: T_CBound -> T_CBoundL -> T_CBoundL sem_CBoundL_Cons hd_ tl_ = (\ _lhsIevalCtx _lhsIisGlobal _lhsIletBindingsCateg _lhsIlev _lhsInm _lhsIopts -> (case (_lhsIopts) of { _tlOopts -> (case (_lhsInm) of { _tlOnm -> (case (_lhsIlev) of { _tlOlev -> (case (_lhsIletBindingsCateg) of { _tlOletBindingsCateg -> (case (_lhsIisGlobal) of { _tlOisGlobal -> (case (_lhsIevalCtx) of { _tlOevalCtx -> (case (tl_ _tlOevalCtx _tlOisGlobal _tlOletBindingsCateg _tlOlev _tlOnm _tlOopts) of { ( _tlIerrs,_tlIisFreeOfLam,_tlInotYetTransformed,_tlIundefNmMp) -> (case (_lhsIopts) of { _hdOopts -> (case (_lhsInm) of { _hdOnm -> (case (_lhsIlev) of { _hdOlev -> (case (_lhsIletBindingsCateg) of { _hdOletBindingsCateg -> (case (_lhsIisGlobal) of { _hdOisGlobal -> (case (_lhsIevalCtx) of { _hdOevalCtx -> (case (True) of { _hdOisTopTup -> (case (True) of { _hdOisTopApp -> (case (hd_ _hdOevalCtx _hdOisGlobal _hdOisTopApp _hdOisTopTup _hdOletBindingsCateg _hdOlev _hdOnm _hdOopts) of { ( _hdIerrs,_hdIisFreeOfLam,_hdIisSimple,_hdInotYetTransformed,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_hdInotYetTransformed `Set.union` _tlInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CBoundL_Nil :: T_CBoundL sem_CBoundL_Nil = (\ _lhsIevalCtx _lhsIisGlobal _lhsIletBindingsCateg _lhsIlev _lhsInm _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOnotYetTransformed,_lhsOundefNmMp) }) }) }) })) -- CDataCon ---------------------------------------------------- {- visit 0: synthesized attributes: dataConNmL : [HsName] dataConstrTagMp : DataConstrTagMp errs : ErrSq undefNmMp : UndefNmMp alternatives: alternative Con: child conNm : {HsName} child tagNr : {Int} child arity : {Int} visit 0: local dti : _ -} -- cata sem_CDataCon :: CDataCon -> T_CDataCon sem_CDataCon (CDataCon_Con _conNm _tagNr _arity) = (sem_CDataCon_Con _conNm _tagNr _arity) -- semantic domain type T_CDataCon = ( ([HsName]),DataConstrTagMp,ErrSq,UndefNmMp) sem_CDataCon_Con :: HsName -> Int -> Int -> T_CDataCon sem_CDataCon_Con conNm_ tagNr_ arity_ = (case ([conNm_]) of { _lhsOdataConNmL -> (case (emptyDataTagInfo { dtiConNm = conNm_ , dtiCTag = mkOnlyConInfoCTag conNm_ tagNr_ arity_ }) of { _dti -> (case (Map.singleton conNm_ _dti) of { _lhsOdataConstrTagMp -> (case (Seq.empty) of { _lhsOerrs -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) }) -- CDataConL --------------------------------------------------- {- visit 0: synthesized attributes: dataConNmL : [HsName] dataConstrTagMp : DataConstrTagMp errs : ErrSq undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CDataCon child tl : CDataConL alternative Nil: -} -- cata sem_CDataConL :: CDataConL -> T_CDataConL sem_CDataConL list = (Prelude.foldr sem_CDataConL_Cons sem_CDataConL_Nil (Prelude.map sem_CDataCon list)) -- semantic domain type T_CDataConL = ( ([HsName]),DataConstrTagMp,ErrSq,UndefNmMp) sem_CDataConL_Cons :: T_CDataCon -> T_CDataConL -> T_CDataConL sem_CDataConL_Cons hd_ tl_ = (case (tl_) of { ( _tlIdataConNmL,_tlIdataConstrTagMp,_tlIerrs,_tlIundefNmMp) -> (case (hd_) of { ( _hdIdataConNmL,_hdIdataConstrTagMp,_hdIerrs,_hdIundefNmMp) -> (case (_hdIdataConNmL ++ _tlIdataConNmL) of { _lhsOdataConNmL -> (case (_hdIdataConstrTagMp `Map.union` _tlIdataConstrTagMp) of { _lhsOdataConstrTagMp -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) }) }) sem_CDataConL_Nil :: T_CDataConL sem_CDataConL_Nil = (case ([]) of { _lhsOdataConNmL -> (case (Map.empty) of { _lhsOdataConstrTagMp -> (case (Seq.empty) of { _lhsOerrs -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOdataConNmL,_lhsOdataConstrTagMp,_lhsOerrs,_lhsOundefNmMp) }) }) }) }) -- CDeclMeta --------------------------------------------------- {- visit 0: synthesized attributes: errs : ErrSq gathDataGam : DataGam modDefsRel : ModEntRel undefNmMp : UndefNmMp alternatives: alternative Data: child tyNm : {HsName} child dataCons : CDataConL -} -- cata sem_CDeclMeta :: CDeclMeta -> T_CDeclMeta sem_CDeclMeta (CDeclMeta_Data _tyNm _dataCons) = (sem_CDeclMeta_Data _tyNm (sem_CDataConL _dataCons)) -- semantic domain type T_CDeclMeta = ( ErrSq,DataGam,ModEntRel,UndefNmMp) sem_CDeclMeta_Data :: HsName -> T_CDataConL -> T_CDeclMeta sem_CDeclMeta_Data tyNm_ dataCons_ = (case (dataCons_) of { ( _dataConsIdataConNmL,_dataConsIdataConstrTagMp,_dataConsIerrs,_dataConsIundefNmMp) -> (case (_dataConsIerrs) of { _lhsOerrs -> (case (gamSingleton tyNm_ $ mkDGIForCodegenOnly tyNm_ _dataConsIdataConstrTagMp) of { _lhsOgathDataGam -> (case (let to = IdOcc ( tyNm_) IdOcc_Data subs = [ ModEnt (ioccKind o) o Set.empty emptyRange | cn <- _dataConsIdataConNmL, let o = IdOcc ( cn) IdOcc_Val ] in Rel.singleton (hsnQualified (ioccNm to)) (ModEnt (ioccKind to) to (Set.fromList subs) emptyRange)) of { _lhsOmodDefsRel -> (case (_dataConsIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) }) -- CDeclMetaL -------------------------------------------------- {- visit 0: synthesized attributes: errs : ErrSq gathDataGam : DataGam modDefsRel : ModEntRel undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CDeclMeta child tl : CDeclMetaL alternative Nil: -} -- cata sem_CDeclMetaL :: CDeclMetaL -> T_CDeclMetaL sem_CDeclMetaL list = (Prelude.foldr sem_CDeclMetaL_Cons sem_CDeclMetaL_Nil (Prelude.map sem_CDeclMeta list)) -- semantic domain type T_CDeclMetaL = ( ErrSq,DataGam,ModEntRel,UndefNmMp) sem_CDeclMetaL_Cons :: T_CDeclMeta -> T_CDeclMetaL -> T_CDeclMetaL sem_CDeclMetaL_Cons hd_ tl_ = (case (tl_) of { ( _tlIerrs,_tlIgathDataGam,_tlImodDefsRel,_tlIundefNmMp) -> (case (hd_) of { ( _hdIerrs,_hdIgathDataGam,_hdImodDefsRel,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIgathDataGam `gamUnion` _tlIgathDataGam) of { _lhsOgathDataGam -> (case (_hdImodDefsRel `Rel.union` _tlImodDefsRel) of { _lhsOmodDefsRel -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) }) }) sem_CDeclMetaL_Nil :: T_CDeclMetaL sem_CDeclMetaL_Nil = (case (Seq.empty) of { _lhsOerrs -> (case (emptyGam) of { _lhsOgathDataGam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOgathDataGam,_lhsOmodDefsRel,_lhsOundefNmMp) }) }) }) }) -- CExport ----------------------------------------------------- {- visit 0: synthesized attributes: errs : ErrSq modExpL : [ModExp] undefNmMp : UndefNmMp alternatives: alternative Export: child nm : {HsName} alternative ExportData: child nm : {HsName} child mbConNmL : {Maybe [HsName]} -} -- cata sem_CExport :: CExport -> T_CExport sem_CExport (CExport_Export _nm) = (sem_CExport_Export _nm) sem_CExport (CExport_ExportData _nm _mbConNmL) = (sem_CExport_ExportData _nm _mbConNmL) -- semantic domain type T_CExport = ( ErrSq,([ModExp]),UndefNmMp) sem_CExport_Export :: HsName -> T_CExport sem_CExport_Export nm_ = (case (Seq.empty) of { _lhsOerrs -> (case ([ModExpEnt (ModEntSpec (hsnQualified nm_) emptyRange Nothing)]) of { _lhsOmodExpL -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) }) sem_CExport_ExportData :: HsName -> (Maybe [HsName]) -> T_CExport sem_CExport_ExportData nm_ mbConNmL_ = (case (Seq.empty) of { _lhsOerrs -> (case ([ModExpEnt (ModEntSpec (hsnQualified nm_) emptyRange (fmap (ModEntSubs . map hsnQualified) mbConNmL_))]) of { _lhsOmodExpL -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) }) -- CExportL ---------------------------------------------------- {- visit 0: synthesized attributes: errs : ErrSq modExpL : [ModExp] undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CExport child tl : CExportL alternative Nil: -} -- cata sem_CExportL :: CExportL -> T_CExportL sem_CExportL list = (Prelude.foldr sem_CExportL_Cons sem_CExportL_Nil (Prelude.map sem_CExport list)) -- semantic domain type T_CExportL = ( ErrSq,([ModExp]),UndefNmMp) sem_CExportL_Cons :: T_CExport -> T_CExportL -> T_CExportL sem_CExportL_Cons hd_ tl_ = (case (tl_) of { ( _tlIerrs,_tlImodExpL,_tlIundefNmMp) -> (case (hd_) of { ( _hdIerrs,_hdImodExpL,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdImodExpL ++ _tlImodExpL) of { _lhsOmodExpL -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) }) }) }) sem_CExportL_Nil :: T_CExportL sem_CExportL_Nil = (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOmodExpL -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOmodExpL,_lhsOundefNmMp) }) }) }) -- CExpr ------------------------------------------------------- {- visit 0: inherited attributes: evalCtx : EvalCtx isTopApp : Bool isTopTup : Bool lev : Int opts : EHCOpts whatAbove : WhatExpr synthesized attributes: errs : ErrSq hasMain : Bool isFreeOfLam : Bool lamBodyIsFreeOfLam : Bool modDefsRel : ModEntRel notYetTransformed : NotYetTransformedS undefNmMp : UndefNmMp whatBelow : WhatExpr alternatives: alternative Var: child ref : {ACoreBindRef} visit 0: local nm : {HsName} local whatBelow : _ alternative Int: child int : {Int} visit 0: local whatBelow : _ alternative Char: child char : {Char} visit 0: local whatBelow : _ alternative String: child str : {String} visit 0: local whatBelow : _ alternative Integer: child integer : {Integer} visit 0: local whatBelow : _ alternative Tup: child tag : {CTag} visit 0: local whatBelow : _ alternative Let: child categ : {CBindCateg} child binds : CBindL child body : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local evalCtx : _ local letBindingsCateg : _ local isGlobal : _ local whatBelow : _ alternative App: child func : CExpr child arg : CBound visit 0: local letBindingsCateg : _ local isTopTup : _ local isGlobal : _ local whatAbove : {WhatExpr} local appNotYetTransformed : _ local whatBelow : _ alternative Lam: child bind : CBind child body : CExpr visit 0: local whatAbove : {WhatExpr} local lev : _ local isTopTup : _ local isTopApp : {Bool} local letBindingsCateg : _ local isGlobal : _ local whatBelow : _ alternative Case: child expr : CExpr child alts : CAltL child dflt : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative CaseAltFail: child failReason : {CaseAltFailReason} child errorExpr : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} alternative TupDel: child expr : CExpr child tag : {CTag} child nm : {HsName} child offset : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative TupIns: child expr : CExpr child tag : {CTag} child nm : {HsName} child offset : CExpr child fldExpr : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative TupUpd: child expr : CExpr child tag : {CTag} child nm : {HsName} child offset : CExpr child fldExpr : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative FFI: child callconv : {FFIWay} child safety : {String} child impEnt : {ForeignEnt} child ty : {Ty} visit 0: local whatBelow : _ alternative Dbg: child info : {String} visit 0: local whatBelow : _ alternative Hole: child uid : {UID} visit 0: local whatBelow : _ alternative HoleLet: child bindsUid : {UID} child body : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative CoeArg: visit 0: local whatBelow : _ alternative ImplsApp: child func : CExpr child uid : {ImplsVarId} visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative ImplsLam: child uid : {ImplsVarId} child body : CExpr visit 0: local whatAbove : {WhatExpr} local isTopTup : _ local isTopApp : {Bool} local whatBelow : _ alternative Ann: child ann : CExprAnn child expr : CExpr -} -- cata sem_CExpr :: CExpr -> T_CExpr sem_CExpr (CExpr_Var _ref) = (sem_CExpr_Var _ref) sem_CExpr (CExpr_Int _int) = (sem_CExpr_Int _int) sem_CExpr (CExpr_Char _char) = (sem_CExpr_Char _char) sem_CExpr (CExpr_String _str) = (sem_CExpr_String _str) sem_CExpr (CExpr_Integer _integer) = (sem_CExpr_Integer _integer) sem_CExpr (CExpr_Tup _tag) = (sem_CExpr_Tup _tag) sem_CExpr (CExpr_Let _categ _binds _body) = (sem_CExpr_Let _categ (sem_CBindL _binds) (sem_CExpr _body)) sem_CExpr (CExpr_App _func _arg) = (sem_CExpr_App (sem_CExpr _func) (sem_CBound _arg)) sem_CExpr (CExpr_Lam _bind _body) = (sem_CExpr_Lam (sem_CBind _bind) (sem_CExpr _body)) sem_CExpr (CExpr_Case _expr _alts _dflt) = (sem_CExpr_Case (sem_CExpr _expr) (sem_CAltL _alts) (sem_CExpr _dflt)) sem_CExpr (CExpr_CaseAltFail _failReason _errorExpr) = (sem_CExpr_CaseAltFail _failReason (sem_CExpr _errorExpr)) sem_CExpr (CExpr_TupDel _expr _tag _nm _offset) = (sem_CExpr_TupDel (sem_CExpr _expr) _tag _nm (sem_CExpr _offset)) sem_CExpr (CExpr_TupIns _expr _tag _nm _offset _fldExpr) = (sem_CExpr_TupIns (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr)) sem_CExpr (CExpr_TupUpd _expr _tag _nm _offset _fldExpr) = (sem_CExpr_TupUpd (sem_CExpr _expr) _tag _nm (sem_CExpr _offset) (sem_CExpr _fldExpr)) sem_CExpr (CExpr_FFI _callconv _safety _impEnt _ty) = (sem_CExpr_FFI _callconv _safety _impEnt _ty) sem_CExpr (CExpr_Dbg _info) = (sem_CExpr_Dbg _info) sem_CExpr (CExpr_Hole _uid) = (sem_CExpr_Hole _uid) sem_CExpr (CExpr_HoleLet _bindsUid _body) = (sem_CExpr_HoleLet _bindsUid (sem_CExpr _body)) sem_CExpr (CExpr_CoeArg) = (sem_CExpr_CoeArg) sem_CExpr (CExpr_ImplsApp _func _uid) = (sem_CExpr_ImplsApp (sem_CExpr _func) _uid) sem_CExpr (CExpr_ImplsLam _uid _body) = (sem_CExpr_ImplsLam _uid (sem_CExpr _body)) sem_CExpr (CExpr_Ann _ann _expr) = (sem_CExpr_Ann (sem_CExprAnn _ann) (sem_CExpr _expr)) -- semantic domain type T_CExpr = EvalCtx -> Bool -> Bool -> Int -> EHCOpts -> WhatExpr -> ( ErrSq,Bool,Bool,Bool,ModEntRel,NotYetTransformedS,UndefNmMp,WhatExpr) sem_CExpr_Var :: ACoreBindRef -> T_CExpr sem_CExpr_Var ref_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (acbrefNm ref_) of { _nm -> (case (ExprIsVar _nm) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) })) sem_CExpr_Int :: Int -> T_CExpr sem_CExpr_Int int_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsInt int_) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_Char :: Char -> T_CExpr sem_CExpr_Char char_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsOtherWHNF) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_String :: String -> T_CExpr sem_CExpr_String str_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsOtherWHNF) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_Integer :: Integer -> T_CExpr sem_CExpr_Integer integer_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsOtherWHNF) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_Tup :: CTag -> T_CExpr sem_CExpr_Tup tag_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsTup tag_) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_Let :: CBindCateg -> T_CBindL -> T_CExpr -> T_CExpr sem_CExpr_Let categ_ binds_ body_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _bodyOwhatAbove -> (case (_lhsIopts) of { _bodyOopts -> (case (_lhsIlev) of { _bodyOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _bodyOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _bodyOisTopApp -> (case (if categ_ == CBindCateg_Strict then EvalCtx_Eval else EvalCtx_Thunk) of { _evalCtx -> (case (_evalCtx) of { _bodyOevalCtx -> (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) -> (case (_lhsIopts) of { _bindsOopts -> (case (categ_) of { _letBindingsCateg -> (case (_letBindingsCateg) of { _bindsOletBindingsCateg -> (case (_lhsIlev == cLevModule) of { _isGlobal -> (case (_isGlobal) of { _bindsOisGlobal -> (case (_evalCtx) of { _bindsOevalCtx -> (case (_lhsIlev + 1) of { _bindsOlev -> (case (binds_ _bindsOevalCtx _bindsOisGlobal _bindsOletBindingsCateg _bindsOlev _bindsOopts) of { ( _bindsIerrs,_bindsIhasMain,_bindsIisFreeOfLam,_bindsImodDefsRel,_bindsInotYetTransformed,_bindsIundefNmMp) -> (case (_bindsIerrs `Seq.union` _bodyIerrs) of { _lhsOerrs -> (case (_bindsIhasMain || _bodyIhasMain) of { _lhsOhasMain -> (case (_bindsIisFreeOfLam && _bodyIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_bindsImodDefsRel `Rel.union` _bodyImodDefsRel) of { _lhsOmodDefsRel -> (case (_bindsInotYetTransformed `Set.union` _bodyInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_bindsIundefNmMp `undefmpUnion` _bodyIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_App :: T_CExpr -> T_CBound -> T_CExpr sem_CExpr_App func_ arg_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (_lhsIopts) of { _argOopts -> (case (_lhsIlev) of { _argOlev -> (case (acoreBindcategPlain) of { _letBindingsCateg -> (case (_letBindingsCateg) of { _argOletBindingsCateg -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _argOisTopTup -> (case (False) of { _isGlobal -> (case (_isGlobal) of { _argOisGlobal -> (case (hsnUnknown) of { _argOnm -> (case (EvalCtx_Thunk) of { _argOevalCtx -> (case (True) of { _argOisTopApp -> (case (arg_ _argOevalCtx _argOisGlobal _argOisTopApp _argOisTopTup _argOletBindingsCateg _argOlev _argOnm _argOopts) of { ( _argIerrs,_argIisFreeOfLam,_argIisSimple,_argInotYetTransformed,_argIundefNmMp) -> (case (maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove) of { _whatAbove -> (case (_whatAbove) of { _funcOwhatAbove -> (case (_lhsIopts) of { _funcOopts -> (case (_lhsIlev) of { _funcOlev -> (case (_isTopTup) of { _funcOisTopTup -> (case (_lhsIevalCtx) of { _funcOevalCtx -> (case (False) of { _funcOisTopApp -> (case (func_ _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlev _funcOopts _funcOwhatAbove) of { ( _funcIerrs,_funcIhasMain,_funcIisFreeOfLam,_funcIlamBodyIsFreeOfLam,_funcImodDefsRel,_funcInotYetTransformed,_funcIundefNmMp,_funcIwhatBelow) -> (case (_funcIerrs `Seq.union` _argIerrs) of { _lhsOerrs -> (case (_funcIhasMain) of { _lhsOhasMain -> (case (_funcIisFreeOfLam && _argIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_funcImodDefsRel) of { _lhsOmodDefsRel -> (case (if _argIisSimple then Set.empty else Set.singleton NotYetTransformed_ANormal) of { _appNotYetTransformed -> (case (Set.unions [_appNotYetTransformed, _funcInotYetTransformed, _argInotYetTransformed]) of { _lhsOnotYetTransformed -> (case (_funcIundefNmMp `undefmpUnion` _argIundefNmMp) of { _lhsOundefNmMp -> (case (maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_Lam :: T_CBind -> T_CExpr -> T_CExpr sem_CExpr_Lam bind_ body_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (case _lhsIwhatAbove of ExprIsLam a mbnm -> ExprIsLam (a + 1) mbnm ExprIsBind nm -> ExprIsLam 1 (Just nm) _ -> ExprIsLam 1 Nothing) of { _whatAbove -> (case (_whatAbove) of { _bodyOwhatAbove -> (case (_lhsIopts) of { _bodyOopts -> (case (_lhsIlev + 1) of { _lev -> (case (_lev) of { _bodyOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _bodyOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _bodyOisTopApp -> (case (_lhsIevalCtx) of { _bodyOevalCtx -> (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) -> (case (_lhsIopts) of { _bindOopts -> (case (_lev) of { _bindOlev -> (case (acoreBindcategPlain) of { _letBindingsCateg -> (case (_letBindingsCateg) of { _bindOletBindingsCateg -> (case (False) of { _isGlobal -> (case (_isGlobal) of { _bindOisGlobal -> (case (_lhsIevalCtx) of { _bindOevalCtx -> (case (bind_ _bindOevalCtx _bindOisGlobal _bindOletBindingsCateg _bindOlev _bindOopts) of { ( _bindIerrs,_bindIhasMain,_bindIisFreeOfLam,_bindImodDefsRel,_bindInm,_bindInotYetTransformed,_bindIundefNmMp) -> (case (_bindIerrs `Seq.union` _bodyIerrs) of { _lhsOerrs -> (case (_bindIhasMain || _bodyIhasMain) of { _lhsOhasMain -> (case (False) of { _lhsOisFreeOfLam -> (case (if whatExprIsLam _bodyIwhatBelow then _bodyIlamBodyIsFreeOfLam else _bodyIisFreeOfLam) of { _lhsOlamBodyIsFreeOfLam -> (case (_bindImodDefsRel `Rel.union` _bodyImodDefsRel) of { _lhsOmodDefsRel -> (case (_bindInotYetTransformed `Set.union` _bodyInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_bindIundefNmMp `undefmpUnion` _bodyIundefNmMp) of { _lhsOundefNmMp -> (case (maybe (ExprIsLam 1 Nothing) (\a -> ExprIsLam (a + 1) Nothing) $ whatExprMbLam _bodyIwhatBelow) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_Case :: T_CExpr -> T_CAltL -> T_CExpr -> T_CExpr sem_CExpr_Case expr_ alts_ dflt_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _dfltOwhatAbove -> (case (_lhsIopts) of { _dfltOopts -> (case (_lhsIlev) of { _dfltOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _dfltOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _dfltOisTopApp -> (case (_lhsIevalCtx) of { _dfltOevalCtx -> (case (dflt_ _dfltOevalCtx _dfltOisTopApp _dfltOisTopTup _dfltOlev _dfltOopts _dfltOwhatAbove) of { ( _dfltIerrs,_dfltIhasMain,_dfltIisFreeOfLam,_dfltIlamBodyIsFreeOfLam,_dfltImodDefsRel,_dfltInotYetTransformed,_dfltIundefNmMp,_dfltIwhatBelow) -> (case (_lhsIopts) of { _altsOopts -> (case (_lhsIlev) of { _altsOlev -> (case (_lhsIevalCtx) of { _altsOevalCtx -> (case (alts_ _altsOevalCtx _altsOlev _altsOopts) of { ( _altsIerrs,_altsIisFreeOfLam,_altsIundefNmMp) -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_isTopTup) of { _exprOisTopTup -> (case (_isTopApp) of { _exprOisTopApp -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs `Seq.union` _altsIerrs `Seq.union` _dfltIerrs) of { _lhsOerrs -> (case (_exprIhasMain || _dfltIhasMain) of { _lhsOhasMain -> (case (_exprIisFreeOfLam && _altsIisFreeOfLam && _dfltIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_exprImodDefsRel `Rel.union` _dfltImodDefsRel) of { _lhsOmodDefsRel -> (case (_exprInotYetTransformed `Set.union` _dfltInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp `undefmpUnion` _altsIundefNmMp `undefmpUnion` _dfltIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_CaseAltFail :: CaseAltFailReason -> T_CExpr -> T_CExpr sem_CExpr_CaseAltFail failReason_ errorExpr_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _errorExprOwhatAbove -> (case (_lhsIopts) of { _errorExprOopts -> (case (_lhsIlev) of { _errorExprOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _errorExprOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _errorExprOisTopApp -> (case (_lhsIevalCtx) of { _errorExprOevalCtx -> (case (errorExpr_ _errorExprOevalCtx _errorExprOisTopApp _errorExprOisTopTup _errorExprOlev _errorExprOopts _errorExprOwhatAbove) of { ( _errorExprIerrs,_errorExprIhasMain,_errorExprIisFreeOfLam,_errorExprIlamBodyIsFreeOfLam,_errorExprImodDefsRel,_errorExprInotYetTransformed,_errorExprIundefNmMp,_errorExprIwhatBelow) -> (case (_errorExprIerrs) of { _lhsOerrs -> (case (_errorExprIhasMain) of { _lhsOhasMain -> (case (_errorExprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_errorExprImodDefsRel) of { _lhsOmodDefsRel -> (case (_errorExprInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_errorExprIundefNmMp) of { _lhsOundefNmMp -> (case (_errorExprIwhatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_TupDel :: T_CExpr -> CTag -> HsName -> T_CExpr -> T_CExpr sem_CExpr_TupDel expr_ tag_ nm_ offset_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _offsetOwhatAbove -> (case (_lhsIopts) of { _offsetOopts -> (case (_lhsIlev) of { _offsetOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _offsetOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _offsetOisTopApp -> (case (_lhsIevalCtx) of { _offsetOevalCtx -> (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_isTopApp) of { _exprOisTopApp -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (False) of { _exprOisTopTup -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs `Seq.union` _offsetIerrs) of { _lhsOerrs -> (case (_exprIhasMain || _offsetIhasMain) of { _lhsOhasMain -> (case (_exprIisFreeOfLam && _offsetIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel) of { _lhsOmodDefsRel -> (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_TupIns :: T_CExpr -> CTag -> HsName -> T_CExpr -> T_CExpr -> T_CExpr sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _fldExprOwhatAbove -> (case (_lhsIopts) of { _fldExprOopts -> (case (_lhsIlev) of { _fldExprOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _fldExprOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _fldExprOisTopApp -> (case (_lhsIevalCtx) of { _fldExprOevalCtx -> (case (fldExpr_ _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlev _fldExprOopts _fldExprOwhatAbove) of { ( _fldExprIerrs,_fldExprIhasMain,_fldExprIisFreeOfLam,_fldExprIlamBodyIsFreeOfLam,_fldExprImodDefsRel,_fldExprInotYetTransformed,_fldExprIundefNmMp,_fldExprIwhatBelow) -> (case (_whatAbove) of { _offsetOwhatAbove -> (case (_lhsIopts) of { _offsetOopts -> (case (_lhsIlev) of { _offsetOlev -> (case (_isTopTup) of { _offsetOisTopTup -> (case (_isTopApp) of { _offsetOisTopApp -> (case (_lhsIevalCtx) of { _offsetOevalCtx -> (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_isTopApp) of { _exprOisTopApp -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (False) of { _exprOisTopTup -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs `Seq.union` _offsetIerrs `Seq.union` _fldExprIerrs) of { _lhsOerrs -> (case (_exprIhasMain || _offsetIhasMain || _fldExprIhasMain) of { _lhsOhasMain -> (case (_exprIisFreeOfLam && _offsetIisFreeOfLam && _fldExprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel `Rel.union` _fldExprImodDefsRel) of { _lhsOmodDefsRel -> (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed `Set.union` _fldExprInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp `undefmpUnion` _fldExprIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_TupUpd :: T_CExpr -> CTag -> HsName -> T_CExpr -> T_CExpr -> T_CExpr sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _fldExprOwhatAbove -> (case (_lhsIopts) of { _fldExprOopts -> (case (_lhsIlev) of { _fldExprOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _fldExprOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _fldExprOisTopApp -> (case (_lhsIevalCtx) of { _fldExprOevalCtx -> (case (fldExpr_ _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlev _fldExprOopts _fldExprOwhatAbove) of { ( _fldExprIerrs,_fldExprIhasMain,_fldExprIisFreeOfLam,_fldExprIlamBodyIsFreeOfLam,_fldExprImodDefsRel,_fldExprInotYetTransformed,_fldExprIundefNmMp,_fldExprIwhatBelow) -> (case (_whatAbove) of { _offsetOwhatAbove -> (case (_lhsIopts) of { _offsetOopts -> (case (_lhsIlev) of { _offsetOlev -> (case (_isTopTup) of { _offsetOisTopTup -> (case (_isTopApp) of { _offsetOisTopApp -> (case (_lhsIevalCtx) of { _offsetOevalCtx -> (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_isTopApp) of { _exprOisTopApp -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (False) of { _exprOisTopTup -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_exprIerrs `Seq.union` _offsetIerrs `Seq.union` _fldExprIerrs) of { _lhsOerrs -> (case (_exprIhasMain || _offsetIhasMain || _fldExprIhasMain) of { _lhsOhasMain -> (case (_exprIisFreeOfLam && _offsetIisFreeOfLam && _fldExprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_exprImodDefsRel `Rel.union` _offsetImodDefsRel `Rel.union` _fldExprImodDefsRel) of { _lhsOmodDefsRel -> (case (_exprInotYetTransformed `Set.union` _offsetInotYetTransformed `Set.union` _fldExprInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_exprIundefNmMp `undefmpUnion` _offsetIundefNmMp `undefmpUnion` _fldExprIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_FFI :: FFIWay -> String -> ForeignEnt -> Ty -> T_CExpr sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsFFI) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_Dbg :: String -> T_CExpr sem_CExpr_Dbg info_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_Hole :: UID -> T_CExpr sem_CExpr_Hole uid_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_HoleLet :: UID -> T_CExpr -> T_CExpr sem_CExpr_HoleLet bindsUid_ body_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _bodyOwhatAbove -> (case (_lhsIopts) of { _bodyOopts -> (case (_lhsIlev) of { _bodyOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _bodyOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _bodyOisTopApp -> (case (_lhsIevalCtx) of { _bodyOevalCtx -> (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) -> (case (_bodyIerrs) of { _lhsOerrs -> (case (_bodyIhasMain) of { _lhsOhasMain -> (case (_bodyIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_bodyImodDefsRel) of { _lhsOmodDefsRel -> (case (_bodyInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_bodyIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_CoeArg :: T_CExpr sem_CExpr_CoeArg = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (Seq.empty) of { _lhsOerrs -> (case (False) of { _lhsOhasMain -> (case (True) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (Rel.empty) of { _lhsOmodDefsRel -> (case (Set.empty) of { _lhsOnotYetTransformed -> (case (Map.empty) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) })) sem_CExpr_ImplsApp :: T_CExpr -> ImplsVarId -> T_CExpr sem_CExpr_ImplsApp func_ uid_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _funcOwhatAbove -> (case (_lhsIopts) of { _funcOopts -> (case (_lhsIlev) of { _funcOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _funcOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _funcOisTopApp -> (case (_lhsIevalCtx) of { _funcOevalCtx -> (case (func_ _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlev _funcOopts _funcOwhatAbove) of { ( _funcIerrs,_funcIhasMain,_funcIisFreeOfLam,_funcIlamBodyIsFreeOfLam,_funcImodDefsRel,_funcInotYetTransformed,_funcIundefNmMp,_funcIwhatBelow) -> (case (_funcIerrs) of { _lhsOerrs -> (case (_funcIhasMain) of { _lhsOhasMain -> (case (_funcIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_funcImodDefsRel) of { _lhsOmodDefsRel -> (case (_funcInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_funcIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_ImplsLam :: ImplsVarId -> T_CExpr -> T_CExpr sem_CExpr_ImplsLam uid_ body_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _bodyOwhatAbove -> (case (_lhsIopts) of { _bodyOopts -> (case (_lhsIlev) of { _bodyOlev -> (case (True) of { _isTopTup -> (case (_isTopTup) of { _bodyOisTopTup -> (case (True) of { _isTopApp -> (case (_isTopApp) of { _bodyOisTopApp -> (case (_lhsIevalCtx) of { _bodyOevalCtx -> (case (body_ _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlev _bodyOopts _bodyOwhatAbove) of { ( _bodyIerrs,_bodyIhasMain,_bodyIisFreeOfLam,_bodyIlamBodyIsFreeOfLam,_bodyImodDefsRel,_bodyInotYetTransformed,_bodyIundefNmMp,_bodyIwhatBelow) -> (case (_bodyIerrs) of { _lhsOerrs -> (case (_bodyIhasMain) of { _lhsOhasMain -> (case (_bodyIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_bodyImodDefsRel) of { _lhsOmodDefsRel -> (case (_bodyInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_bodyIundefNmMp) of { _lhsOundefNmMp -> (case (ExprIsOther) of { _whatBelow -> (case (_whatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_CExpr_Ann :: T_CExprAnn -> T_CExpr -> T_CExpr sem_CExpr_Ann ann_ expr_ = (\ _lhsIevalCtx _lhsIisTopApp _lhsIisTopTup _lhsIlev _lhsIopts _lhsIwhatAbove -> (case (_lhsIwhatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (_lhsIisTopTup) of { _exprOisTopTup -> (case (_lhsIisTopApp) of { _exprOisTopApp -> (case (_lhsIevalCtx) of { _exprOevalCtx -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (_lhsIopts) of { _annOopts -> (case (_lhsIlev) of { _annOlev -> (case (ann_ _annOlev _annOopts) of { ( _annIerrs,_annIisFreeOfLam,_annIundefNmMp) -> (case (_annIerrs `Seq.union` _exprIerrs) of { _lhsOerrs -> (case (_exprIhasMain) of { _lhsOhasMain -> (case (_annIisFreeOfLam && _exprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (False) of { _lhsOlamBodyIsFreeOfLam -> (case (_exprImodDefsRel) of { _lhsOmodDefsRel -> (case (_exprInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_annIundefNmMp `undefmpUnion` _exprIundefNmMp) of { _lhsOundefNmMp -> (case (_exprIwhatBelow) of { _lhsOwhatBelow -> ( _lhsOerrs,_lhsOhasMain,_lhsOisFreeOfLam,_lhsOlamBodyIsFreeOfLam,_lhsOmodDefsRel,_lhsOnotYetTransformed,_lhsOundefNmMp,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) -- CExprAnn ---------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Ty: child ty : {Ty} alternative Debug: child info : {String} -} -- cata sem_CExprAnn :: CExprAnn -> T_CExprAnn sem_CExprAnn (CExprAnn_Ty _ty) = (sem_CExprAnn_Ty _ty) sem_CExprAnn (CExprAnn_Debug _info) = (sem_CExprAnn_Debug _info) -- semantic domain type T_CExprAnn = Int -> EHCOpts -> ( ErrSq,Bool,UndefNmMp) sem_CExprAnn_Ty :: Ty -> T_CExprAnn sem_CExprAnn_Ty ty_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) sem_CExprAnn_Debug :: String -> T_CExprAnn sem_CExprAnn_Debug info_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) -- CImport ----------------------------------------------------- {- visit 0: synthesized attributes: errs : ErrSq impModNmL : [HsName] modImpL : [ModImp] undefNmMp : UndefNmMp alternatives: alternative Import: child nm : {HsName} -} -- cata sem_CImport :: CImport -> T_CImport sem_CImport (CImport_Import _nm) = (sem_CImport_Import _nm) -- semantic domain type T_CImport = ( ErrSq,([HsName]),([ModImp]),UndefNmMp) sem_CImport_Import :: HsName -> T_CImport sem_CImport_Import nm_ = (case (Seq.empty) of { _lhsOerrs -> (case ([nm_]) of { _lhsOimpModNmL -> (case ([ModImp True nm_ nm_ False [] emptyRange]) of { _lhsOmodImpL -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) }) -- CImportL ---------------------------------------------------- {- visit 0: synthesized attributes: errs : ErrSq impModNmL : [HsName] modImpL : [ModImp] undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CImport child tl : CImportL alternative Nil: -} -- cata sem_CImportL :: CImportL -> T_CImportL sem_CImportL list = (Prelude.foldr sem_CImportL_Cons sem_CImportL_Nil (Prelude.map sem_CImport list)) -- semantic domain type T_CImportL = ( ErrSq,([HsName]),([ModImp]),UndefNmMp) sem_CImportL_Cons :: T_CImport -> T_CImportL -> T_CImportL sem_CImportL_Cons hd_ tl_ = (case (tl_) of { ( _tlIerrs,_tlIimpModNmL,_tlImodImpL,_tlIundefNmMp) -> (case (hd_) of { ( _hdIerrs,_hdIimpModNmL,_hdImodImpL,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIimpModNmL ++ _tlIimpModNmL) of { _lhsOimpModNmL -> (case (_hdImodImpL ++ _tlImodImpL) of { _lhsOmodImpL -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) }) }) }) sem_CImportL_Nil :: T_CImportL sem_CImportL_Nil = (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOimpModNmL -> (case ([]) of { _lhsOmodImpL -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOimpModNmL,_lhsOmodImpL,_lhsOundefNmMp) }) }) }) }) -- CModule ----------------------------------------------------- {- visit 0: inherited attributes: lev : Int moduleNm : HsName opts : EHCOpts synthesized attributes: errs : ErrSq gathDataGam : DataGam hasMain : Bool impModNmL : [HsName] isFreeOfLam : Bool mod : Mod notYetTransformed : NotYetTransformedS realModuleNm : HsName undefNmMp : UndefNmMp alternatives: alternative Mod: child moduleNm : {HsName} child exports : CExportL child imports : CImportL child declMetas : CDeclMetaL child expr : CExpr visit 0: local whatAbove : {WhatExpr} local realModuleNm : _ -} -- cata sem_CModule :: CModule -> T_CModule sem_CModule (CModule_Mod _moduleNm _exports _imports _declMetas _expr) = (sem_CModule_Mod _moduleNm (sem_CExportL _exports) (sem_CImportL _imports) (sem_CDeclMetaL _declMetas) (sem_CExpr _expr)) -- semantic domain type T_CModule = Int -> HsName -> EHCOpts -> ( ErrSq,DataGam,Bool,([HsName]),Bool,Mod,NotYetTransformedS,HsName,UndefNmMp) sem_CModule_Mod :: HsName -> T_CExportL -> T_CImportL -> T_CDeclMetaL -> T_CExpr -> T_CModule sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ = (\ _lhsIlev _lhsImoduleNm _lhsIopts -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _exprOwhatAbove -> (case (_lhsIopts) of { _exprOopts -> (case (_lhsIlev) of { _exprOlev -> (case (EvalCtx_Eval) of { _exprOevalCtx -> (case (True) of { _exprOisTopTup -> (case (True) of { _exprOisTopApp -> (case (expr_ _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlev _exprOopts _exprOwhatAbove) of { ( _exprIerrs,_exprIhasMain,_exprIisFreeOfLam,_exprIlamBodyIsFreeOfLam,_exprImodDefsRel,_exprInotYetTransformed,_exprIundefNmMp,_exprIwhatBelow) -> (case (declMetas_) of { ( _declMetasIerrs,_declMetasIgathDataGam,_declMetasImodDefsRel,_declMetasIundefNmMp) -> (case (imports_) of { ( _importsIerrs,_importsIimpModNmL,_importsImodImpL,_importsIundefNmMp) -> (case (exports_) of { ( _exportsIerrs,_exportsImodExpL,_exportsIundefNmMp) -> (case (_exportsIerrs `Seq.union` _importsIerrs `Seq.union` _declMetasIerrs `Seq.union` _exprIerrs) of { _lhsOerrs -> (case (_declMetasIgathDataGam) of { _lhsOgathDataGam -> (case (_exprIhasMain) of { _lhsOhasMain -> (case (_importsIimpModNmL) of { _lhsOimpModNmL -> (case (_exprIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (moduleNm_) of { _realModuleNm -> (case (Mod _realModuleNm (Just _realModuleNm) (Just _exportsImodExpL) _importsImodImpL (_declMetasImodDefsRel `Rel.union` _exprImodDefsRel) Rel.empty []) of { _lhsOmod -> (case (_exprInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_realModuleNm) of { _lhsOrealModuleNm -> (case (_exportsIundefNmMp `undefmpUnion` _importsIundefNmMp `undefmpUnion` _declMetasIundefNmMp `undefmpUnion` _exprIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOisFreeOfLam,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) -- CPat -------------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq fldNmL : [HsName] isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Var: child pnm : {HsName} alternative Con: child tag : {CTag} child rest : CPatRest child binds : CPatFldL alternative Int: child int : {Int} alternative Char: child char : {Char} alternative BoolExpr: child cexpr : {CExpr} -} -- cata sem_CPat :: CPat -> T_CPat sem_CPat (CPat_Var _pnm) = (sem_CPat_Var _pnm) sem_CPat (CPat_Con _tag _rest _binds) = (sem_CPat_Con _tag (sem_CPatRest _rest) (sem_CPatFldL _binds)) sem_CPat (CPat_Int _int) = (sem_CPat_Int _int) sem_CPat (CPat_Char _char) = (sem_CPat_Char _char) sem_CPat (CPat_BoolExpr _cexpr) = (sem_CPat_BoolExpr _cexpr) -- semantic domain type T_CPat = Int -> EHCOpts -> ( ErrSq,([HsName]),Bool,UndefNmMp) sem_CPat_Var :: HsName -> T_CPat sem_CPat_Var pnm_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOfldNmL -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) })) sem_CPat_Con :: CTag -> T_CPatRest -> T_CPatFldL -> T_CPat sem_CPat_Con tag_ rest_ binds_ = (\ _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _bindsOopts -> (case (_lhsIlev) of { _bindsOlev -> (case (binds_ _bindsOlev _bindsOopts) of { ( _bindsIerrs,_bindsIfldNmL,_bindsIisFreeOfLam,_bindsIundefNmMp) -> (case (_lhsIopts) of { _restOopts -> (case (_lhsIlev) of { _restOlev -> (case (rest_ _restOlev _restOopts) of { ( _restIerrs,_restIisFreeOfLam,_restIundefNmMp) -> (case (_restIerrs `Seq.union` _bindsIerrs) of { _lhsOerrs -> (case (_bindsIfldNmL) of { _lhsOfldNmL -> (case (_restIisFreeOfLam && _bindsIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_restIundefNmMp `undefmpUnion` _bindsIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) })) sem_CPat_Int :: Int -> T_CPat sem_CPat_Int int_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOfldNmL -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) })) sem_CPat_Char :: Char -> T_CPat sem_CPat_Char char_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOfldNmL -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) })) sem_CPat_BoolExpr :: CExpr -> T_CPat sem_CPat_BoolExpr cexpr_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOfldNmL -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) })) -- CPatFld ----------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq fldNmL : [HsName] isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Fld: child lbl : {HsName} child offset : CExpr child bind : CBind child fldAnns : CBindAnnL visit 0: local whatAbove : {WhatExpr} local fldNm : _ -} -- cata sem_CPatFld :: CPatFld -> T_CPatFld sem_CPatFld (CPatFld_Fld _lbl _offset _bind _fldAnns) = (sem_CPatFld_Fld _lbl (sem_CExpr _offset) (sem_CBind _bind) (sem_CBindAnnL _fldAnns)) -- semantic domain type T_CPatFld = Int -> EHCOpts -> ( ErrSq,([HsName]),Bool,UndefNmMp) sem_CPatFld_Fld :: HsName -> T_CExpr -> T_CBind -> T_CBindAnnL -> T_CPatFld sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ = (\ _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _fldAnnsOopts -> (case (_lhsIlev) of { _fldAnnsOlev -> (case (fldAnns_ _fldAnnsOlev _fldAnnsOopts) of { ( _fldAnnsIerrs,_fldAnnsIisFreeOfLam,_fldAnnsIundefNmMp) -> (case (_lhsIopts) of { _bindOopts -> (case (_lhsIlev) of { _bindOlev -> (case (False) of { _bindOisGlobal -> (case (EvalCtx_None) of { _bindOevalCtx -> (case (acoreBindcategPlain) of { _bindOletBindingsCateg -> (case (bind_ _bindOevalCtx _bindOisGlobal _bindOletBindingsCateg _bindOlev _bindOopts) of { ( _bindIerrs,_bindIhasMain,_bindIisFreeOfLam,_bindImodDefsRel,_bindInm,_bindInotYetTransformed,_bindIundefNmMp) -> (case (ExprIsOther) of { _whatAbove -> (case (_whatAbove) of { _offsetOwhatAbove -> (case (_lhsIopts) of { _offsetOopts -> (case (_lhsIlev) of { _offsetOlev -> (case (EvalCtx_Eval) of { _offsetOevalCtx -> (case (True) of { _offsetOisTopTup -> (case (True) of { _offsetOisTopApp -> (case (offset_ _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlev _offsetOopts _offsetOwhatAbove) of { ( _offsetIerrs,_offsetIhasMain,_offsetIisFreeOfLam,_offsetIlamBodyIsFreeOfLam,_offsetImodDefsRel,_offsetInotYetTransformed,_offsetIundefNmMp,_offsetIwhatBelow) -> (case (_offsetIerrs `Seq.union` _bindIerrs `Seq.union` _fldAnnsIerrs) of { _lhsOerrs -> (case (_bindInm) of { _fldNm -> (case ([_fldNm]) of { _lhsOfldNmL -> (case (_offsetIisFreeOfLam && _bindIisFreeOfLam && _fldAnnsIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_offsetIundefNmMp `undefmpUnion` _bindIundefNmMp `undefmpUnion` _fldAnnsIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) -- CPatFldL ---------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq fldNmL : [HsName] isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Cons: child hd : CPatFld child tl : CPatFldL alternative Nil: -} -- cata sem_CPatFldL :: CPatFldL -> T_CPatFldL sem_CPatFldL list = (Prelude.foldr sem_CPatFldL_Cons sem_CPatFldL_Nil (Prelude.map sem_CPatFld list)) -- semantic domain type T_CPatFldL = Int -> EHCOpts -> ( ErrSq,([HsName]),Bool,UndefNmMp) sem_CPatFldL_Cons :: T_CPatFld -> T_CPatFldL -> T_CPatFldL sem_CPatFldL_Cons hd_ tl_ = (\ _lhsIlev _lhsIopts -> (case (_lhsIopts) of { _tlOopts -> (case (_lhsIlev) of { _tlOlev -> (case (tl_ _tlOlev _tlOopts) of { ( _tlIerrs,_tlIfldNmL,_tlIisFreeOfLam,_tlIundefNmMp) -> (case (_lhsIopts) of { _hdOopts -> (case (_lhsIlev) of { _hdOlev -> (case (hd_ _hdOlev _hdOopts) of { ( _hdIerrs,_hdIfldNmL,_hdIisFreeOfLam,_hdIundefNmMp) -> (case (_hdIerrs `Seq.union` _tlIerrs) of { _lhsOerrs -> (case (_hdIfldNmL ++ _tlIfldNmL) of { _lhsOfldNmL -> (case (_hdIisFreeOfLam && _tlIisFreeOfLam) of { _lhsOisFreeOfLam -> (case (_hdIundefNmMp `undefmpUnion` _tlIundefNmMp) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) }) }) }) }) }) }) })) sem_CPatFldL_Nil :: T_CPatFldL sem_CPatFldL_Nil = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case ([]) of { _lhsOfldNmL -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOfldNmL,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) }) })) -- CPatRest ---------------------------------------------------- {- visit 0: inherited attributes: lev : Int opts : EHCOpts synthesized attributes: errs : ErrSq isFreeOfLam : Bool undefNmMp : UndefNmMp alternatives: alternative Var: child nm : {HsName} alternative Empty: -} -- cata sem_CPatRest :: CPatRest -> T_CPatRest sem_CPatRest (CPatRest_Var _nm) = (sem_CPatRest_Var _nm) sem_CPatRest (CPatRest_Empty) = (sem_CPatRest_Empty) -- semantic domain type T_CPatRest = Int -> EHCOpts -> ( ErrSq,Bool,UndefNmMp) sem_CPatRest_Var :: HsName -> T_CPatRest sem_CPatRest_Var nm_ = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) sem_CPatRest_Empty :: T_CPatRest sem_CPatRest_Empty = (\ _lhsIlev _lhsIopts -> (case (Seq.empty) of { _lhsOerrs -> (case (True) of { _lhsOisFreeOfLam -> (case (Map.empty) of { _lhsOundefNmMp -> ( _lhsOerrs,_lhsOisFreeOfLam,_lhsOundefNmMp) }) }) })) -- CodeAGItf --------------------------------------------------- {- visit 0: inherited attributes: moduleNm : HsName opts : EHCOpts synthesized attributes: errs : ErrSq gathDataGam : DataGam hasMain : Bool impModNmL : [HsName] mod : Mod notYetTransformed : NotYetTransformedS realModuleNm : HsName alternatives: alternative AGItf: child module : CModule -} -- cata sem_CodeAGItf :: CodeAGItf -> T_CodeAGItf sem_CodeAGItf (CodeAGItf_AGItf _module) = (sem_CodeAGItf_AGItf (sem_CModule _module)) -- semantic domain type T_CodeAGItf = HsName -> EHCOpts -> ( ErrSq,DataGam,Bool,([HsName]),Mod,NotYetTransformedS,HsName) data Inh_CodeAGItf = Inh_CodeAGItf {moduleNm_Inh_CodeAGItf :: HsName,opts_Inh_CodeAGItf :: EHCOpts} data Syn_CodeAGItf = Syn_CodeAGItf {errs_Syn_CodeAGItf :: ErrSq,gathDataGam_Syn_CodeAGItf :: DataGam,hasMain_Syn_CodeAGItf :: Bool,impModNmL_Syn_CodeAGItf :: ([HsName]),mod_Syn_CodeAGItf :: Mod,notYetTransformed_Syn_CodeAGItf :: NotYetTransformedS,realModuleNm_Syn_CodeAGItf :: HsName} wrap_CodeAGItf :: T_CodeAGItf -> Inh_CodeAGItf -> Syn_CodeAGItf wrap_CodeAGItf sem (Inh_CodeAGItf _lhsImoduleNm _lhsIopts) = (let ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm) = sem _lhsImoduleNm _lhsIopts in (Syn_CodeAGItf _lhsOerrs _lhsOgathDataGam _lhsOhasMain _lhsOimpModNmL _lhsOmod _lhsOnotYetTransformed _lhsOrealModuleNm)) sem_CodeAGItf_AGItf :: T_CModule -> T_CodeAGItf sem_CodeAGItf_AGItf module_ = (\ _lhsImoduleNm _lhsIopts -> (case (_lhsIopts) of { _moduleOopts -> (case (_lhsImoduleNm) of { _moduleOmoduleNm -> (case (cLevModule) of { _moduleOlev -> (case (module_ _moduleOlev _moduleOmoduleNm _moduleOopts) of { ( _moduleIerrs,_moduleIgathDataGam,_moduleIhasMain,_moduleIimpModNmL,_moduleIisFreeOfLam,_moduleImod,_moduleInotYetTransformed,_moduleIrealModuleNm,_moduleIundefNmMp) -> (case (_moduleIerrs) of { _lhsOerrs -> (case (_moduleIgathDataGam) of { _lhsOgathDataGam -> (case (_moduleIhasMain) of { _lhsOhasMain -> (case (_moduleIimpModNmL) of { _lhsOimpModNmL -> (case (_moduleImod) of { _lhsOmod -> (case (_moduleInotYetTransformed) of { _lhsOnotYetTransformed -> (case (_moduleIrealModuleNm) of { _lhsOrealModuleNm -> ( _lhsOerrs,_lhsOgathDataGam,_lhsOhasMain,_lhsOimpModNmL,_lhsOmod,_lhsOnotYetTransformed,_lhsOrealModuleNm) }) }) }) }) }) }) }) }) }) }) }))