uhc-light-1.1.9.2: src/UHC/Light/Compiler/Core/ToGrin.hs
-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Core/ToGrin.ag)
module UHC.Light.Compiler.Core.ToGrin(Inh_CodeAGItf (..), Syn_CodeAGItf (..), wrap_CodeAGItf, sem_CodeAGItf) where
import Data.Char
import Data.Maybe
import Data.List
import qualified Data.Set as Set
import qualified Data.Map as Map
import UHC.Util.Utils
import UHC.Util.Pretty
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Base.TermLike
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.Base.HsName.Builtin
import UHC.Light.Compiler.CodeGen.BuiltinSizeInfo
import UHC.Light.Compiler.LamInfo
import UHC.Light.Compiler.Core
import UHC.Light.Compiler.Ty
import UHC.Light.Compiler.Gam.Full
import UHC.Light.Compiler.Core.FFI
import Debug.Trace
import Control.Monad
import Control.Monad.State
import UHC.Light.Compiler.Foreign.Extract
import UHC.Light.Compiler.CodeGen.ImportUsedModules
import UHC.Light.Compiler.CodeGen.BuiltinPrims
deriving instance Typeable Syn_CodeAGItf
-- CAlt --------------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attribute:
fvS : FvS
alternatives:
alternative Alt:
child pat : CPat
child expr : CExpr
visit 1:
local whatAbove : {WhatExpr}
local lev : _
local fvS : _
-}
-- 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 = UID ->
( UID,T_CAlt_1)
type T_CAlt_1 = DataGam ->
EvalCtx ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS)
sem_CAlt_Alt :: T_CPat ->
T_CExpr ->
T_CAlt
sem_CAlt_Alt pat_ expr_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _patOgUniq ->
(case (pat_ _patOgUniq) of
{ ( _patIgUniq,pat_1) ->
(case (_patIgUniq) of
{ _exprOgUniq ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CAlt_Alt_1 :: T_CAlt_1
sem_CAlt_Alt_1 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev + 1) of
{ _lev ->
(case (_lev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (True) of
{ _exprOisTopTup ->
(case (True) of
{ _exprOisTopApp ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_lhsIopts) of
{ _patOopts ->
(case (_lhsImodNm) of
{ _patOmodNm ->
(case (_lev) of
{ _patOlev ->
(case (_lhsIlamMp) of
{ _patOlamMp ->
(case (_lhsIdataGam) of
{ _patOdataGam ->
(case (pat_1 _patOdataGam _patOlamMp _patOlev _patOmodNm _patOopts) of
{ ( _patIfldNmL,_patIfvS,_patInmL) ->
(case (_exprIfvS `Set.difference` Set.fromList _patInmL) of
{ _fvS ->
(case (_fvS) of
{ _lhsOfvS ->
( _lhsOfvS) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CAlt_Alt_1)) of
{ ( sem_CAlt_1) ->
( _lhsOgUniq,sem_CAlt_1) }) }) }) }) }) }) }))
-- CAltL -------------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attribute:
fvS : FvS
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 = UID ->
( UID,T_CAltL_1)
type T_CAltL_1 = DataGam ->
EvalCtx ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS)
sem_CAltL_Cons :: T_CAlt ->
T_CAltL ->
T_CAltL
sem_CAltL_Cons hd_ tl_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _hdOgUniq ->
(case (hd_ _hdOgUniq) of
{ ( _hdIgUniq,hd_1) ->
(case (_hdIgUniq) of
{ _tlOgUniq ->
(case (tl_ _tlOgUniq) of
{ ( _tlIgUniq,tl_1) ->
(case (_tlIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CAltL_Cons_1 :: T_CAltL_1
sem_CAltL_Cons_1 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _tlOopts ->
(case (_lhsImodNm) of
{ _tlOmodNm ->
(case (_lhsIlev) of
{ _tlOlev ->
(case (_lhsIlamMp) of
{ _tlOlamMp ->
(case (_lhsIevalCtx) of
{ _tlOevalCtx ->
(case (_lhsIdataGam) of
{ _tlOdataGam ->
(case (tl_1 _tlOdataGam _tlOevalCtx _tlOlamMp _tlOlev _tlOmodNm _tlOopts) of
{ ( _tlIfvS) ->
(case (_lhsIopts) of
{ _hdOopts ->
(case (_lhsImodNm) of
{ _hdOmodNm ->
(case (_lhsIlev) of
{ _hdOlev ->
(case (_lhsIlamMp) of
{ _hdOlamMp ->
(case (_lhsIevalCtx) of
{ _hdOevalCtx ->
(case (_lhsIdataGam) of
{ _hdOdataGam ->
(case (hd_1 _hdOdataGam _hdOevalCtx _hdOlamMp _hdOlev _hdOmodNm _hdOopts) of
{ ( _hdIfvS) ->
(case (_hdIfvS `Set.union` _tlIfvS) of
{ _lhsOfvS ->
( _lhsOfvS) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CAltL_Cons_1)) of
{ ( sem_CAltL_1) ->
( _lhsOgUniq,sem_CAltL_1) }) }) }) }) }) }))
sem_CAltL_Nil :: T_CAltL
sem_CAltL_Nil =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CAltL_Nil_1 :: T_CAltL_1
sem_CAltL_Nil_1 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
in sem_CAltL_Nil_1)) of
{ ( sem_CAltL_1) ->
( _lhsOgUniq,sem_CAltL_1) }) }))
-- CBind -------------------------------------------------------
{-
visit 0:
synthesized attributes:
bindLamMp : LamMp
nm : HsName
visit 1:
chained attribute:
gUniq : UID
visit 2:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
isGlobal : Bool
lamMp : LamMp
letBindingsCateg : CBindCateg
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
fvSMp : FvSMp
nmL : [HsName]
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 = ( LamMp,HsName,T_CBind_1)
type T_CBind_1 = UID ->
( UID,T_CBind_2)
type T_CBind_2 = DataGam ->
EvalCtx ->
Bool ->
LamMp ->
CBindCateg ->
Int ->
HsName ->
EHCOpts ->
( FvS,FvSMp,([HsName]))
sem_CBind_Bind :: HsName ->
T_CBoundL ->
T_CBind
sem_CBind_Bind nm_ bindAspects_ =
(case (nm_) of
{ _bindAspectsOnm ->
(case (bindAspects_ _bindAspectsOnm) of
{ ( _bindAspectsIbindLamMp,bindAspects_1) ->
(case (_bindAspectsIbindLamMp) of
{ _lhsObindLamMp ->
(case (nm_) of
{ _lhsOnm ->
(case ((let sem_CBind_Bind_1 :: T_CBind_1
sem_CBind_Bind_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _bindAspectsOgUniq ->
(case (bindAspects_1 _bindAspectsOgUniq) of
{ ( _bindAspectsIgUniq,bindAspects_2) ->
(case (_bindAspectsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBind_Bind_2 :: T_CBind_2
sem_CBind_Bind_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _bindAspectsOopts ->
(case (_lhsImodNm) of
{ _bindAspectsOmodNm ->
(case (_lhsIlev) of
{ _bindAspectsOlev ->
(case (_lhsIletBindingsCateg) of
{ _bindAspectsOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _bindAspectsOlamMp ->
(case (_lhsIisGlobal) of
{ _bindAspectsOisGlobal ->
(case (_lhsIevalCtx) of
{ _bindAspectsOevalCtx ->
(case (_lhsIdataGam) of
{ _bindAspectsOdataGam ->
(case (bindAspects_2 _bindAspectsOdataGam _bindAspectsOevalCtx _bindAspectsOisGlobal _bindAspectsOlamMp _bindAspectsOletBindingsCateg _bindAspectsOlev _bindAspectsOmodNm _bindAspectsOopts) of
{ ( _bindAspectsIfvS,_bindAspectsIfvSMp,_bindAspectsInmL) ->
(case (_bindAspectsIfvS) of
{ _lhsOfvS ->
(case (Map.singleton nm_ _bindAspectsIfvS) of
{ _lhsOfvSMp ->
(case ([nm_]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBind_Bind_2)) of
{ ( sem_CBind_2) ->
( _lhsOgUniq,sem_CBind_2) }) }) }) }))
in sem_CBind_Bind_1)) of
{ ( sem_CBind_1) ->
( _lhsObindLamMp,_lhsOnm,sem_CBind_1) }) }) }) }) })
-- CBindAnn ----------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
nmL : [HsName]
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 = UID ->
( UID,T_CBindAnn_1)
type T_CBindAnn_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS,([HsName]))
sem_CBindAnn_Coe :: (()) ->
T_CBindAnn
sem_CBindAnn_Coe coe_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBindAnn_Coe_1 :: T_CBindAnn_1
sem_CBindAnn_Coe_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOnmL) }) }))
in sem_CBindAnn_Coe_1)) of
{ ( sem_CBindAnn_1) ->
( _lhsOgUniq,sem_CBindAnn_1) }) }))
-- CBindAnnL ---------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
nmL : [HsName]
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 = UID ->
( UID,T_CBindAnnL_1)
type T_CBindAnnL_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS,([HsName]))
sem_CBindAnnL_Cons :: T_CBindAnn ->
T_CBindAnnL ->
T_CBindAnnL
sem_CBindAnnL_Cons hd_ tl_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _hdOgUniq ->
(case (hd_ _hdOgUniq) of
{ ( _hdIgUniq,hd_1) ->
(case (_hdIgUniq) of
{ _tlOgUniq ->
(case (tl_ _tlOgUniq) of
{ ( _tlIgUniq,tl_1) ->
(case (_tlIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBindAnnL_Cons_1 :: T_CBindAnnL_1
sem_CBindAnnL_Cons_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _tlOopts ->
(case (_lhsImodNm) of
{ _tlOmodNm ->
(case (_lhsIlev) of
{ _tlOlev ->
(case (_lhsIlamMp) of
{ _tlOlamMp ->
(case (_lhsIdataGam) of
{ _tlOdataGam ->
(case (tl_1 _tlOdataGam _tlOlamMp _tlOlev _tlOmodNm _tlOopts) of
{ ( _tlIfvS,_tlInmL) ->
(case (_lhsIopts) of
{ _hdOopts ->
(case (_lhsImodNm) of
{ _hdOmodNm ->
(case (_lhsIlev) of
{ _hdOlev ->
(case (_lhsIlamMp) of
{ _hdOlamMp ->
(case (_lhsIdataGam) of
{ _hdOdataGam ->
(case (hd_1 _hdOdataGam _hdOlamMp _hdOlev _hdOmodNm _hdOopts) of
{ ( _hdIfvS,_hdInmL) ->
(case (_hdIfvS `Set.union` _tlIfvS) of
{ _lhsOfvS ->
(case (_hdInmL ++ _tlInmL) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBindAnnL_Cons_1)) of
{ ( sem_CBindAnnL_1) ->
( _lhsOgUniq,sem_CBindAnnL_1) }) }) }) }) }) }))
sem_CBindAnnL_Nil :: T_CBindAnnL
sem_CBindAnnL_Nil =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBindAnnL_Nil_1 :: T_CBindAnnL_1
sem_CBindAnnL_Nil_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOnmL) }) }))
in sem_CBindAnnL_Nil_1)) of
{ ( sem_CBindAnnL_1) ->
( _lhsOgUniq,sem_CBindAnnL_1) }) }))
-- CBindL ------------------------------------------------------
{-
visit 0:
synthesized attribute:
bindLamMp : LamMp
visit 1:
chained attribute:
gUniq : UID
visit 2:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
isGlobal : Bool
lamMp : LamMp
letBindingsCateg : CBindCateg
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
fvSMp : FvSMp
nmL : [HsName]
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 = ( LamMp,T_CBindL_1)
type T_CBindL_1 = UID ->
( UID,T_CBindL_2)
type T_CBindL_2 = DataGam ->
EvalCtx ->
Bool ->
LamMp ->
CBindCateg ->
Int ->
HsName ->
EHCOpts ->
( FvS,FvSMp,([HsName]))
sem_CBindL_Cons :: T_CBind ->
T_CBindL ->
T_CBindL
sem_CBindL_Cons hd_ tl_ =
(case (tl_) of
{ ( _tlIbindLamMp,tl_1) ->
(case (hd_) of
{ ( _hdIbindLamMp,_hdInm,hd_1) ->
(case (_hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp) of
{ _lhsObindLamMp ->
(case ((let sem_CBindL_Cons_1 :: T_CBindL_1
sem_CBindL_Cons_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _hdOgUniq ->
(case (hd_1 _hdOgUniq) of
{ ( _hdIgUniq,hd_2) ->
(case (_hdIgUniq) of
{ _tlOgUniq ->
(case (tl_1 _tlOgUniq) of
{ ( _tlIgUniq,tl_2) ->
(case (_tlIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBindL_Cons_2 :: T_CBindL_2
sem_CBindL_Cons_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _tlOopts ->
(case (_lhsImodNm) of
{ _tlOmodNm ->
(case (_lhsIlev) of
{ _tlOlev ->
(case (_lhsIletBindingsCateg) of
{ _tlOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _tlOlamMp ->
(case (_lhsIisGlobal) of
{ _tlOisGlobal ->
(case (_lhsIevalCtx) of
{ _tlOevalCtx ->
(case (_lhsIdataGam) of
{ _tlOdataGam ->
(case (tl_2 _tlOdataGam _tlOevalCtx _tlOisGlobal _tlOlamMp _tlOletBindingsCateg _tlOlev _tlOmodNm _tlOopts) of
{ ( _tlIfvS,_tlIfvSMp,_tlInmL) ->
(case (_lhsIopts) of
{ _hdOopts ->
(case (_lhsImodNm) of
{ _hdOmodNm ->
(case (_lhsIlev) of
{ _hdOlev ->
(case (_lhsIletBindingsCateg) of
{ _hdOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _hdOlamMp ->
(case (_lhsIisGlobal) of
{ _hdOisGlobal ->
(case (_lhsIevalCtx) of
{ _hdOevalCtx ->
(case (_lhsIdataGam) of
{ _hdOdataGam ->
(case (hd_2 _hdOdataGam _hdOevalCtx _hdOisGlobal _hdOlamMp _hdOletBindingsCateg _hdOlev _hdOmodNm _hdOopts) of
{ ( _hdIfvS,_hdIfvSMp,_hdInmL) ->
(case (_hdIfvS `Set.union` _tlIfvS) of
{ _lhsOfvS ->
(case (_hdIfvSMp `Map.union` _tlIfvSMp) of
{ _lhsOfvSMp ->
(case (_hdInmL ++ _tlInmL) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBindL_Cons_2)) of
{ ( sem_CBindL_2) ->
( _lhsOgUniq,sem_CBindL_2) }) }) }) }) }) }))
in sem_CBindL_Cons_1)) of
{ ( sem_CBindL_1) ->
( _lhsObindLamMp,sem_CBindL_1) }) }) }) })
sem_CBindL_Nil :: T_CBindL
sem_CBindL_Nil =
(case (Map.empty) of
{ _lhsObindLamMp ->
(case ((let sem_CBindL_Nil_1 :: T_CBindL_1
sem_CBindL_Nil_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBindL_Nil_2 :: T_CBindL_2
sem_CBindL_Nil_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }))
in sem_CBindL_Nil_2)) of
{ ( sem_CBindL_2) ->
( _lhsOgUniq,sem_CBindL_2) }) }))
in sem_CBindL_Nil_1)) of
{ ( sem_CBindL_1) ->
( _lhsObindLamMp,sem_CBindL_1) }) })
-- CBound ------------------------------------------------------
{-
visit 0:
inherited attribute:
nm : HsName
synthesized attribute:
bindLamMp : LamMp
visit 1:
chained attribute:
gUniq : UID
visit 2:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
isGlobal : Bool
isTopApp : Bool
isTopTup : Bool
lamMp : LamMp
letBindingsCateg : CBindCateg
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
fvSMp : FvSMp
nmL : [HsName]
alternatives:
alternative Bind:
child bindMeta : CMetas
child expr : CExpr
visit 2:
local whatAbove : {WhatExpr}
alternative Meta:
child aspectKeyS : {ACoreBindAspectKeyS}
child cmetas : CMetas
alternative Val:
child aspectKeyS : {ACoreBindAspectKeyS}
child mlev : {MetaLev}
child lbl : {CLbl}
child expr : CExpr
visit 2:
local whatAbove : {WhatExpr}
alternative Ty:
child aspectKeyS : {ACoreBindAspectKeyS}
child ty : {Ty}
alternative FFE:
child callconv : {FFIWay}
child expEnt : {ForeignEnt}
child expr : CExpr
child ty : {Ty}
visit 2:
local whatAbove : {WhatExpr}
-}
-- cata
sem_CBound :: CBound ->
T_CBound
sem_CBound (CBound_Bind _bindMeta _expr) =
(sem_CBound_Bind (sem_CMetas _bindMeta) (sem_CExpr _expr))
sem_CBound (CBound_Meta _aspectKeyS _cmetas) =
(sem_CBound_Meta _aspectKeyS (sem_CMetas _cmetas))
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 = HsName ->
( LamMp,T_CBound_1)
type T_CBound_1 = UID ->
( UID,T_CBound_2)
type T_CBound_2 = DataGam ->
EvalCtx ->
Bool ->
Bool ->
Bool ->
LamMp ->
CBindCateg ->
Int ->
HsName ->
EHCOpts ->
( FvS,FvSMp,([HsName]))
sem_CBound_Bind :: T_CMetas ->
T_CExpr ->
T_CBound
sem_CBound_Bind bindMeta_ expr_ =
(\ _lhsInm ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (Map.singleton _lhsInm
(emptyLamInfo {laminfoArity = length _exprIgrLamArgL})) of
{ _lhsObindLamMp ->
(case ((let sem_CBound_Bind_1 :: T_CBound_1
sem_CBound_Bind_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _exprOgUniq ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBound_Bind_2 :: T_CBound_2
sem_CBound_Bind_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (ExprIsBind _lhsInm) of
{ _whatAbove ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (True) of
{ _exprOisTopTup ->
(case (True) of
{ _exprOisTopApp ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_lhsIopts) of
{ _bindMetaOopts ->
(case (_lhsImodNm) of
{ _bindMetaOmodNm ->
(case (_lhsIlev) of
{ _bindMetaOlev ->
(case (_lhsIlamMp) of
{ _bindMetaOlamMp ->
(case (_lhsIdataGam) of
{ _bindMetaOdataGam ->
(case (bindMeta_ _bindMetaOdataGam _bindMetaOlamMp _bindMetaOlev _bindMetaOmodNm _bindMetaOopts) of
{ ( _bindMetaIfvS) ->
(case (_bindMetaIfvS `Set.union` _exprIfvS) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBound_Bind_2)) of
{ ( sem_CBound_2) ->
( _lhsOgUniq,sem_CBound_2) }) }) }) }))
in sem_CBound_Bind_1)) of
{ ( sem_CBound_1) ->
( _lhsObindLamMp,sem_CBound_1) }) }) }))
sem_CBound_Meta :: ACoreBindAspectKeyS ->
T_CMetas ->
T_CBound
sem_CBound_Meta aspectKeyS_ cmetas_ =
(\ _lhsInm ->
(case (Map.empty) of
{ _lhsObindLamMp ->
(case ((let sem_CBound_Meta_1 :: T_CBound_1
sem_CBound_Meta_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBound_Meta_2 :: T_CBound_2
sem_CBound_Meta_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _cmetasOopts ->
(case (_lhsImodNm) of
{ _cmetasOmodNm ->
(case (_lhsIlev) of
{ _cmetasOlev ->
(case (_lhsIlamMp) of
{ _cmetasOlamMp ->
(case (_lhsIdataGam) of
{ _cmetasOdataGam ->
(case (cmetas_ _cmetasOdataGam _cmetasOlamMp _cmetasOlev _cmetasOmodNm _cmetasOopts) of
{ ( _cmetasIfvS) ->
(case (_cmetasIfvS) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }))
in sem_CBound_Meta_2)) of
{ ( sem_CBound_2) ->
( _lhsOgUniq,sem_CBound_2) }) }))
in sem_CBound_Meta_1)) of
{ ( sem_CBound_1) ->
( _lhsObindLamMp,sem_CBound_1) }) }))
sem_CBound_Val :: ACoreBindAspectKeyS ->
MetaLev ->
CLbl ->
T_CExpr ->
T_CBound
sem_CBound_Val aspectKeyS_ mlev_ lbl_ expr_ =
(\ _lhsInm ->
(case (Map.empty) of
{ _lhsObindLamMp ->
(case ((let sem_CBound_Val_1 :: T_CBound_1
sem_CBound_Val_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _exprOgUniq ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBound_Val_2 :: T_CBound_2
sem_CBound_Val_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (ExprIsBind _lhsInm) of
{ _whatAbove ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_lhsIisTopTup) of
{ _exprOisTopTup ->
(case (_lhsIisTopApp) of
{ _exprOisTopApp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBound_Val_2)) of
{ ( sem_CBound_2) ->
( _lhsOgUniq,sem_CBound_2) }) }) }) }) }))
in sem_CBound_Val_1)) of
{ ( sem_CBound_1) ->
( _lhsObindLamMp,sem_CBound_1) }) }))
sem_CBound_Ty :: ACoreBindAspectKeyS ->
Ty ->
T_CBound
sem_CBound_Ty aspectKeyS_ ty_ =
(\ _lhsInm ->
(case (Map.empty) of
{ _lhsObindLamMp ->
(case ((let sem_CBound_Ty_1 :: T_CBound_1
sem_CBound_Ty_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBound_Ty_2 :: T_CBound_2
sem_CBound_Ty_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }))
in sem_CBound_Ty_2)) of
{ ( sem_CBound_2) ->
( _lhsOgUniq,sem_CBound_2) }) }))
in sem_CBound_Ty_1)) of
{ ( sem_CBound_1) ->
( _lhsObindLamMp,sem_CBound_1) }) }))
sem_CBound_FFE :: FFIWay ->
ForeignEnt ->
T_CExpr ->
Ty ->
T_CBound
sem_CBound_FFE callconv_ expEnt_ expr_ ty_ =
(\ _lhsInm ->
(case (Map.empty) of
{ _lhsObindLamMp ->
(case ((let sem_CBound_FFE_1 :: T_CBound_1
sem_CBound_FFE_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _exprOgUniq ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBound_FFE_2 :: T_CBound_2
sem_CBound_FFE_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (ExprIsLam 0 Nothing) of
{ _whatAbove ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (True) of
{ _exprOisTopTup ->
(case (True) of
{ _exprOisTopApp ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBound_FFE_2)) of
{ ( sem_CBound_2) ->
( _lhsOgUniq,sem_CBound_2) }) }) }) }) }))
in sem_CBound_FFE_1)) of
{ ( sem_CBound_1) ->
( _lhsObindLamMp,sem_CBound_1) }) }))
-- CBoundL -----------------------------------------------------
{-
visit 0:
inherited attribute:
nm : HsName
synthesized attribute:
bindLamMp : LamMp
visit 1:
chained attribute:
gUniq : UID
visit 2:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
isGlobal : Bool
lamMp : LamMp
letBindingsCateg : CBindCateg
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
fvSMp : FvSMp
nmL : [HsName]
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 = HsName ->
( LamMp,T_CBoundL_1)
type T_CBoundL_1 = UID ->
( UID,T_CBoundL_2)
type T_CBoundL_2 = DataGam ->
EvalCtx ->
Bool ->
LamMp ->
CBindCateg ->
Int ->
HsName ->
EHCOpts ->
( FvS,FvSMp,([HsName]))
sem_CBoundL_Cons :: T_CBound ->
T_CBoundL ->
T_CBoundL
sem_CBoundL_Cons hd_ tl_ =
(\ _lhsInm ->
(case (_lhsInm) of
{ _tlOnm ->
(case (_lhsInm) of
{ _hdOnm ->
(case (tl_ _tlOnm) of
{ ( _tlIbindLamMp,tl_1) ->
(case (hd_ _hdOnm) of
{ ( _hdIbindLamMp,hd_1) ->
(case (_hdIbindLamMp `lamMpUnionBindAspMp` _tlIbindLamMp) of
{ _lhsObindLamMp ->
(case ((let sem_CBoundL_Cons_1 :: T_CBoundL_1
sem_CBoundL_Cons_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _hdOgUniq ->
(case (hd_1 _hdOgUniq) of
{ ( _hdIgUniq,hd_2) ->
(case (_hdIgUniq) of
{ _tlOgUniq ->
(case (tl_1 _tlOgUniq) of
{ ( _tlIgUniq,tl_2) ->
(case (_tlIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBoundL_Cons_2 :: T_CBoundL_2
sem_CBoundL_Cons_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _tlOopts ->
(case (_lhsImodNm) of
{ _tlOmodNm ->
(case (_lhsIlev) of
{ _tlOlev ->
(case (_lhsIletBindingsCateg) of
{ _tlOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _tlOlamMp ->
(case (_lhsIisGlobal) of
{ _tlOisGlobal ->
(case (_lhsIevalCtx) of
{ _tlOevalCtx ->
(case (_lhsIdataGam) of
{ _tlOdataGam ->
(case (tl_2 _tlOdataGam _tlOevalCtx _tlOisGlobal _tlOlamMp _tlOletBindingsCateg _tlOlev _tlOmodNm _tlOopts) of
{ ( _tlIfvS,_tlIfvSMp,_tlInmL) ->
(case (_lhsIopts) of
{ _hdOopts ->
(case (_lhsImodNm) of
{ _hdOmodNm ->
(case (_lhsIlev) of
{ _hdOlev ->
(case (_lhsIletBindingsCateg) of
{ _hdOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _hdOlamMp ->
(case (_lhsIisGlobal) of
{ _hdOisGlobal ->
(case (_lhsIevalCtx) of
{ _hdOevalCtx ->
(case (_lhsIdataGam) of
{ _hdOdataGam ->
(case (True) of
{ _hdOisTopTup ->
(case (True) of
{ _hdOisTopApp ->
(case (hd_2 _hdOdataGam _hdOevalCtx _hdOisGlobal _hdOisTopApp _hdOisTopTup _hdOlamMp _hdOletBindingsCateg _hdOlev _hdOmodNm _hdOopts) of
{ ( _hdIfvS,_hdIfvSMp,_hdInmL) ->
(case (_hdIfvS `Set.union` _tlIfvS) of
{ _lhsOfvS ->
(case (_hdIfvSMp `Map.union` _tlIfvSMp) of
{ _lhsOfvSMp ->
(case (_hdInmL ++ _tlInmL) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CBoundL_Cons_2)) of
{ ( sem_CBoundL_2) ->
( _lhsOgUniq,sem_CBoundL_2) }) }) }) }) }) }))
in sem_CBoundL_Cons_1)) of
{ ( sem_CBoundL_1) ->
( _lhsObindLamMp,sem_CBoundL_1) }) }) }) }) }) }))
sem_CBoundL_Nil :: T_CBoundL
sem_CBoundL_Nil =
(\ _lhsInm ->
(case (Map.empty) of
{ _lhsObindLamMp ->
(case ((let sem_CBoundL_Nil_1 :: T_CBoundL_1
sem_CBoundL_Nil_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CBoundL_Nil_2 :: T_CBoundL_2
sem_CBoundL_Nil_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisGlobal
_lhsIlamMp
_lhsIletBindingsCateg
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Map.empty) of
{ _lhsOfvSMp ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOfvSMp,_lhsOnmL) }) }) }))
in sem_CBoundL_Nil_2)) of
{ ( sem_CBoundL_2) ->
( _lhsOgUniq,sem_CBoundL_2) }) }))
in sem_CBoundL_Nil_1)) of
{ ( sem_CBoundL_1) ->
( _lhsObindLamMp,sem_CBoundL_1) }) }))
-- CDataCon ----------------------------------------------------
{-
visit 0:
synthesized attribute:
dataConstrTagMp : DataConstrTagMp
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 = ( DataConstrTagMp)
sem_CDataCon_Con :: HsName ->
Int ->
Int ->
T_CDataCon
sem_CDataCon_Con conNm_ tagNr_ arity_ =
(case (emptyDataTagInfo
{ dtiConNm = conNm_
, dtiCTag = mkOnlyConInfoCTag conNm_ tagNr_ arity_
}) of
{ _dti ->
(case (Map.singleton conNm_ _dti) of
{ _lhsOdataConstrTagMp ->
( _lhsOdataConstrTagMp) }) })
-- CDataConL ---------------------------------------------------
{-
visit 0:
synthesized attribute:
dataConstrTagMp : DataConstrTagMp
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 = ( DataConstrTagMp)
sem_CDataConL_Cons :: T_CDataCon ->
T_CDataConL ->
T_CDataConL
sem_CDataConL_Cons hd_ tl_ =
(case (tl_) of
{ ( _tlIdataConstrTagMp) ->
(case (hd_) of
{ ( _hdIdataConstrTagMp) ->
(case (_hdIdataConstrTagMp `Map.union` _tlIdataConstrTagMp) of
{ _lhsOdataConstrTagMp ->
( _lhsOdataConstrTagMp) }) }) })
sem_CDataConL_Nil :: T_CDataConL
sem_CDataConL_Nil =
(case (Map.empty) of
{ _lhsOdataConstrTagMp ->
( _lhsOdataConstrTagMp) })
-- CDeclMeta ---------------------------------------------------
{-
visit 0:
synthesized attribute:
gathDataGam : DataGam
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 = ( DataGam)
sem_CDeclMeta_Data :: HsName ->
T_CDataConL ->
T_CDeclMeta
sem_CDeclMeta_Data tyNm_ dataCons_ =
(case (dataCons_) of
{ ( _dataConsIdataConstrTagMp) ->
(case (gamSingleton tyNm_ $ mkDGIForCodegenOnly tyNm_ _dataConsIdataConstrTagMp) of
{ _lhsOgathDataGam ->
( _lhsOgathDataGam) }) })
-- CDeclMetaL --------------------------------------------------
{-
visit 0:
synthesized attribute:
gathDataGam : DataGam
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 = ( DataGam)
sem_CDeclMetaL_Cons :: T_CDeclMeta ->
T_CDeclMetaL ->
T_CDeclMetaL
sem_CDeclMetaL_Cons hd_ tl_ =
(case (tl_) of
{ ( _tlIgathDataGam) ->
(case (hd_) of
{ ( _hdIgathDataGam) ->
(case (_hdIgathDataGam `gamUnion` _tlIgathDataGam) of
{ _lhsOgathDataGam ->
( _lhsOgathDataGam) }) }) })
sem_CDeclMetaL_Nil :: T_CDeclMetaL
sem_CDeclMetaL_Nil =
(case (emptyGam) of
{ _lhsOgathDataGam ->
( _lhsOgathDataGam) })
-- CExport -----------------------------------------------------
{-
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 = ( )
sem_CExport_Export :: HsName ->
T_CExport
sem_CExport_Export nm_ =
( )
sem_CExport_ExportData :: HsName ->
(Maybe [HsName]) ->
T_CExport
sem_CExport_ExportData nm_ mbConNmL_ =
( )
-- CExportL ----------------------------------------------------
{-
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 = ( )
sem_CExportL_Cons :: T_CExport ->
T_CExportL ->
T_CExportL
sem_CExportL_Cons hd_ tl_ =
( )
sem_CExportL_Nil :: T_CExportL
sem_CExportL_Nil =
( )
-- CExpr -------------------------------------------------------
{-
visit 0:
synthesized attributes:
gathLamMp : LamMp
grLamArgL : [HsName]
visit 1:
chained attribute:
gUniq : UID
visit 2:
inherited attributes:
dataGam : DataGam
evalCtx : EvalCtx
isTopApp : Bool
isTopTup : Bool
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
whatAbove : WhatExpr
synthesized attributes:
appFunKind : AppFunKind
fvS : FvS
mbFFIApp : Maybe ( Ty
, Bool
, FFIWay
, ForeignEnt
, [Ty]
)
mbLam : Maybe [HsName]
mbVar : Maybe HsName
whatBelow : WhatExpr
alternatives:
alternative Var:
child ref : {ACoreBindRef}
visit 1:
local _tup1 : _
visit 2:
local nm : {HsName}
local mbVar : {Maybe HsName}
local whatBelow : _
alternative Int:
child int : {Int}
visit 1:
local _tup2 : _
visit 2:
local whatBelow : _
alternative Char:
child char : {Char}
visit 1:
local _tup3 : _
visit 2:
local whatBelow : _
alternative String:
child str : {String}
visit 1:
local _tup4 : _
visit 2:
local whatBelow : _
alternative Integer:
child integer : {Integer}
visit 1:
local _tup5 : _
visit 2:
local whatBelow : _
alternative Tup:
child tag : {CTag}
visit 2:
local whatBelow : _
alternative Let:
child categ : {CBindCateg}
child binds : CBindL
child body : CExpr
visit 2:
local whatAbove : {WhatExpr}
local isTopTup : _
local isTopApp : {Bool}
local evalCtx : _
local letBindingsCateg : _
local isGlobal : _
local fvS : _
local whatBelow : _
alternative App:
child func : CExpr
child arg : CBound
visit 1:
local _tup6 : _
visit 2:
local whatAbove : {WhatExpr}
local isTopTup : _
local letBindingsCateg : _
local isGlobal : _
local fvS : _
local whatBelow : _
alternative Lam:
child bind : CBind
child body : CExpr
visit 0:
local argNm : _
visit 1:
intra argNm : _
visit 2:
local whatAbove : {WhatExpr}
local lev : _
local isTopTup : _
local isTopApp : {Bool}
local fvS : _
local whatBelow : _
intra argNm : _
alternative Case:
child expr : CExpr
child alts : CAltL
child dflt : CExpr
visit 1:
local _tup7 : _
visit 2:
local whatAbove : {WhatExpr}
local isTopTup : _
local isTopApp : {Bool}
local whatBelow : _
alternative CaseAltFail:
child failReason : {CaseAltFailReason}
child errorExpr : CExpr
visit 2:
local whatAbove : {WhatExpr}
local isTopTup : _
local isTopApp : {Bool}
alternative TupDel:
child expr : CExpr
child tag : {CTag}
child nm : {HsName}
child offset : CExpr
visit 1:
local _tup8 : _
visit 2:
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 1:
local _tup9 : _
visit 2:
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 1:
local _tup10 : _
visit 2:
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 1:
local _tup11 : _
visit 2:
local foreignEntInfo : _
local mbPrimNeedEval : {Maybe PrimitiveNeedsEval}
local primResNeedsEval : {Bool}
local argTyLresTy : {( TyL, Ty )}
local resTy : _
local argTyL : {TyL}
local whatBelow : _
alternative Dbg:
child info : {String}
visit 2:
local whatBelow : _
alternative Hole:
child uid : {UID}
visit 2:
local whatBelow : _
alternative HoleLet:
child bindsUid : {UID}
child body : CExpr
visit 2:
local whatAbove : {WhatExpr}
local isTopTup : _
local isTopApp : {Bool}
local whatBelow : _
alternative CoeArg:
visit 2:
local whatBelow : _
alternative ImplsApp:
child func : CExpr
child uid : {ImplsVarId}
visit 2:
local whatAbove : {WhatExpr}
local isTopTup : _
local isTopApp : {Bool}
local whatBelow : _
alternative ImplsLam:
child uid : {ImplsVarId}
child body : CExpr
visit 2:
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 = ( LamMp,([HsName]),T_CExpr_1)
type T_CExpr_1 = UID ->
( UID,T_CExpr_2)
type T_CExpr_2 = DataGam ->
EvalCtx ->
Bool ->
Bool ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
WhatExpr ->
( AppFunKind,FvS,(Maybe ( Ty
, Bool
, FFIWay
, ForeignEnt
, [Ty]
)),(Maybe [HsName]),(Maybe HsName),WhatExpr)
sem_CExpr_Var :: ACoreBindRef ->
T_CExpr
sem_CExpr_Var ref_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Var_1 :: T_CExpr_1
sem_CExpr_Var_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup1 ->
(case (__tup1) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CExpr_Var_2 :: T_CExpr_2
sem_CExpr_Var_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_Fun ref_) of
{ _lhsOappFunKind ->
(case (acbrefNm ref_) of
{ _nm ->
(case (Set.singleton _nm) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Just _nm) of
{ _mbVar ->
(case (_mbVar) of
{ _lhsOmbVar ->
(case (ExprIsVar _nm) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }))
in sem_CExpr_Var_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }))
in sem_CExpr_Var_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Int :: Int ->
T_CExpr
sem_CExpr_Int int_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Int_1 :: T_CExpr_1
sem_CExpr_Int_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup2 ->
(case (__tup2) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CExpr_Int_2 :: T_CExpr_2
sem_CExpr_Int_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsInt int_) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_Int_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }))
in sem_CExpr_Int_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Char :: Char ->
T_CExpr
sem_CExpr_Char char_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Char_1 :: T_CExpr_1
sem_CExpr_Char_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup3 ->
(case (__tup3) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CExpr_Char_2 :: T_CExpr_2
sem_CExpr_Char_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOtherWHNF) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_Char_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }))
in sem_CExpr_Char_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_String :: String ->
T_CExpr
sem_CExpr_String str_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_String_1 :: T_CExpr_1
sem_CExpr_String_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup4 ->
(case (__tup4) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CExpr_String_2 :: T_CExpr_2
sem_CExpr_String_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOtherWHNF) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_String_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }))
in sem_CExpr_String_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Integer :: Integer ->
T_CExpr
sem_CExpr_Integer integer_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Integer_1 :: T_CExpr_1
sem_CExpr_Integer_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup5 ->
(case (__tup5) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CExpr_Integer_2 :: T_CExpr_2
sem_CExpr_Integer_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOtherWHNF) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_Integer_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }))
in sem_CExpr_Integer_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Tup :: CTag ->
T_CExpr
sem_CExpr_Tup tag_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Tup_1 :: T_CExpr_1
sem_CExpr_Tup_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Tup_2 :: T_CExpr_2
sem_CExpr_Tup_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_Tag tag_) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsTup tag_) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_Tup_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }))
in sem_CExpr_Tup_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Let :: CBindCateg ->
T_CBindL ->
T_CExpr ->
T_CExpr
sem_CExpr_Let categ_ binds_ body_ =
(case (body_) of
{ ( _bodyIgathLamMp,_bodyIgrLamArgL,body_1) ->
(case (binds_) of
{ ( _bindsIbindLamMp,binds_1) ->
(case (_bindsIbindLamMp `Map.union` _bodyIgathLamMp) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Let_1 :: T_CExpr_1
sem_CExpr_Let_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _bindsOgUniq ->
(case (binds_1 _bindsOgUniq) of
{ ( _bindsIgUniq,binds_2) ->
(case (_bindsIgUniq) of
{ _bodyOgUniq ->
(case (body_1 _bodyOgUniq) of
{ ( _bodyIgUniq,body_2) ->
(case (_bodyIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Let_2 :: T_CExpr_2
sem_CExpr_Let_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _bodyOwhatAbove ->
(case (_lhsIopts) of
{ _bodyOopts ->
(case (_lhsImodNm) of
{ _bodyOmodNm ->
(case (_lhsIlev) of
{ _bodyOlev ->
(case (_lhsIlamMp) of
{ _bodyOlamMp ->
(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 (_lhsIdataGam) of
{ _bodyOdataGam ->
(case (body_2 _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmodNm _bodyOopts _bodyOwhatAbove) of
{ ( _bodyIappFunKind,_bodyIfvS,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIwhatBelow) ->
(case (_lhsIopts) of
{ _bindsOopts ->
(case (_lhsImodNm) of
{ _bindsOmodNm ->
(case (categ_) of
{ _letBindingsCateg ->
(case (_letBindingsCateg) of
{ _bindsOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _bindsOlamMp ->
(case (_lhsIlev == cLevModule) of
{ _isGlobal ->
(case (_isGlobal) of
{ _bindsOisGlobal ->
(case (_evalCtx) of
{ _bindsOevalCtx ->
(case (_lhsIdataGam) of
{ _bindsOdataGam ->
(case (_lhsIlev + 1) of
{ _bindsOlev ->
(case (binds_2 _bindsOdataGam _bindsOevalCtx _bindsOisGlobal _bindsOlamMp _bindsOletBindingsCateg _bindsOlev _bindsOmodNm _bindsOopts) of
{ ( _bindsIfvS,_bindsIfvSMp,_bindsInmL) ->
(case ((_bodyIfvS `Set.union` _bindsIfvS) `Set.difference` Set.fromList _bindsInmL) of
{ _fvS ->
(case (_fvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_Let_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }))
in sem_CExpr_Let_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) }) }) })
sem_CExpr_App :: T_CExpr ->
T_CBound ->
T_CExpr
sem_CExpr_App func_ arg_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_App_1 :: T_CExpr_1
sem_CExpr_App_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> case nextUnique __cont of { (__cont, lUniq2) -> (__cont,lUniq,lUniq2)}} )) of
{ __tup6 ->
(case (__tup6) of
{ (_funcOgUniq,_,_) ->
(case (func_) of
{ ( _funcIgathLamMp,_funcIgrLamArgL,func_1) ->
(case (func_1 _funcOgUniq) of
{ ( _funcIgUniq,func_2) ->
(case (_funcIgUniq) of
{ _argOgUniq ->
(case (hsnUnknown) of
{ _argOnm ->
(case (arg_ _argOnm) of
{ ( _argIbindLamMp,arg_1) ->
(case (arg_1 _argOgUniq) of
{ ( _argIgUniq,arg_2) ->
(case (_argIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_App_2 :: T_CExpr_2
sem_CExpr_App_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (maybe (ExprIsApp 1 ExprIsOther) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _lhsIwhatAbove) of
{ _whatAbove ->
(case (_whatAbove) of
{ _funcOwhatAbove ->
(case (_lhsIopts) of
{ _funcOopts ->
(case (_lhsImodNm) of
{ _funcOmodNm ->
(case (_lhsIlev) of
{ _funcOlev ->
(case (_lhsIlamMp) of
{ _funcOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _funcOisTopTup ->
(case (_lhsIevalCtx) of
{ _funcOevalCtx ->
(case (_lhsIdataGam) of
{ _funcOdataGam ->
(case (False) of
{ _funcOisTopApp ->
(case (func_2 _funcOdataGam _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlamMp _funcOlev _funcOmodNm _funcOopts _funcOwhatAbove) of
{ ( _funcIappFunKind,_funcIfvS,_funcImbFFIApp,_funcImbLam,_funcImbVar,_funcIwhatBelow) ->
(case (_funcIappFunKind) of
{ _lhsOappFunKind ->
(case (_lhsIopts) of
{ _argOopts ->
(case (_lhsImodNm) of
{ _argOmodNm ->
(case (_lhsIlev) of
{ _argOlev ->
(case (acoreBindcategPlain) of
{ _letBindingsCateg ->
(case (_letBindingsCateg) of
{ _argOletBindingsCateg ->
(case (_lhsIlamMp) of
{ _argOlamMp ->
(case (_isTopTup) of
{ _argOisTopTup ->
(case (False) of
{ _isGlobal ->
(case (_isGlobal) of
{ _argOisGlobal ->
(case (_lhsIdataGam) of
{ _argOdataGam ->
(case (EvalCtx_Thunk) of
{ _argOevalCtx ->
(case (True) of
{ _argOisTopApp ->
(case (arg_2 _argOdataGam _argOevalCtx _argOisGlobal _argOisTopApp _argOisTopTup _argOlamMp _argOletBindingsCateg _argOlev _argOmodNm _argOopts) of
{ ( _argIfvS,_argIfvSMp,_argInmL) ->
(case (_funcIfvS `Set.union` _argIfvS) of
{ _fvS ->
(case (_fvS) of
{ _lhsOfvS ->
(case (_funcImbFFIApp) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (maybe (ExprIsApp 1 _funcIwhatBelow) (\(a,w) -> ExprIsApp (a + 1) w) $ whatExprMbApp _funcIwhatBelow) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_App_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_App_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Lam :: T_CBind ->
T_CExpr ->
T_CExpr
sem_CExpr_Lam bind_ body_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case (bind_) of
{ ( _bindIbindLamMp,_bindInm,bind_1) ->
(case (_bindInm) of
{ _argNm ->
(case (body_) of
{ ( _bodyIgathLamMp,_bodyIgrLamArgL,body_1) ->
(case (_argNm : _bodyIgrLamArgL) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Lam_1 :: T_CExpr_1
sem_CExpr_Lam_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _bindOgUniq ->
(case (bind_1 _bindOgUniq) of
{ ( _bindIgUniq,bind_2) ->
(case (_bindIgUniq) of
{ _bodyOgUniq ->
(case (body_1 _bodyOgUniq) of
{ ( _bodyIgUniq,body_2) ->
(case (_bodyIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Lam_2 :: T_CExpr_2
sem_CExpr_Lam_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(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 (_lhsImodNm) of
{ _bodyOmodNm ->
(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 (_lhsIdataGam) of
{ _bodyOdataGam ->
(case (Map.delete _argNm _lhsIlamMp) of
{ _bodyOlamMp ->
(case (body_2 _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmodNm _bodyOopts _bodyOwhatAbove) of
{ ( _bodyIappFunKind,_bodyIfvS,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIwhatBelow) ->
(case (_argNm `Set.delete` _bodyIfvS) of
{ _fvS ->
(case (_fvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Just $ maybe [_argNm] (_argNm:) _bodyImbLam) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (maybe (ExprIsLam 1 Nothing) (\a -> ExprIsLam (a + 1) Nothing) $ whatExprMbLam _bodyIwhatBelow) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_Lam_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }))
in sem_CExpr_Lam_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) }) }) }) })
sem_CExpr_Case :: T_CExpr ->
T_CAltL ->
T_CExpr ->
T_CExpr
sem_CExpr_Case expr_ alts_ dflt_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Case_1 :: T_CExpr_1
sem_CExpr_Case_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup7 ->
(case (__tup7) of
{ (_exprOgUniq,_) ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _altsOgUniq ->
(case (alts_ _altsOgUniq) of
{ ( _altsIgUniq,alts_1) ->
(case (_altsIgUniq) of
{ _dfltOgUniq ->
(case (dflt_) of
{ ( _dfltIgathLamMp,_dfltIgrLamArgL,dflt_1) ->
(case (dflt_1 _dfltOgUniq) of
{ ( _dfltIgUniq,dflt_2) ->
(case (_dfltIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Case_2 :: T_CExpr_2
sem_CExpr_Case_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _dfltOwhatAbove ->
(case (_lhsIopts) of
{ _dfltOopts ->
(case (_lhsImodNm) of
{ _dfltOmodNm ->
(case (_lhsIlev) of
{ _dfltOlev ->
(case (_lhsIlamMp) of
{ _dfltOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _dfltOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _dfltOisTopApp ->
(case (_lhsIevalCtx) of
{ _dfltOevalCtx ->
(case (_lhsIdataGam) of
{ _dfltOdataGam ->
(case (dflt_2 _dfltOdataGam _dfltOevalCtx _dfltOisTopApp _dfltOisTopTup _dfltOlamMp _dfltOlev _dfltOmodNm _dfltOopts _dfltOwhatAbove) of
{ ( _dfltIappFunKind,_dfltIfvS,_dfltImbFFIApp,_dfltImbLam,_dfltImbVar,_dfltIwhatBelow) ->
(case (_lhsIopts) of
{ _altsOopts ->
(case (_lhsImodNm) of
{ _altsOmodNm ->
(case (_lhsIlev) of
{ _altsOlev ->
(case (_lhsIlamMp) of
{ _altsOlamMp ->
(case (_lhsIevalCtx) of
{ _altsOevalCtx ->
(case (_lhsIdataGam) of
{ _altsOdataGam ->
(case (alts_1 _altsOdataGam _altsOevalCtx _altsOlamMp _altsOlev _altsOmodNm _altsOopts) of
{ ( _altsIfvS) ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_isTopTup) of
{ _exprOisTopTup ->
(case (_isTopApp) of
{ _exprOisTopApp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS `Set.union` _altsIfvS `Set.union` _dfltIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_Case_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_Case_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_CaseAltFail :: CaseAltFailReason ->
T_CExpr ->
T_CExpr
sem_CExpr_CaseAltFail failReason_ errorExpr_ =
(case (errorExpr_) of
{ ( _errorExprIgathLamMp,_errorExprIgrLamArgL,errorExpr_1) ->
(case (_errorExprIgathLamMp) of
{ _lhsOgathLamMp ->
(case (_errorExprIgrLamArgL) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_CaseAltFail_1 :: T_CExpr_1
sem_CExpr_CaseAltFail_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _errorExprOgUniq ->
(case (errorExpr_1 _errorExprOgUniq) of
{ ( _errorExprIgUniq,errorExpr_2) ->
(case (_errorExprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_CaseAltFail_2 :: T_CExpr_2
sem_CExpr_CaseAltFail_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _errorExprOwhatAbove ->
(case (_lhsIopts) of
{ _errorExprOopts ->
(case (_lhsImodNm) of
{ _errorExprOmodNm ->
(case (_lhsIlev) of
{ _errorExprOlev ->
(case (_lhsIlamMp) of
{ _errorExprOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _errorExprOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _errorExprOisTopApp ->
(case (_lhsIevalCtx) of
{ _errorExprOevalCtx ->
(case (_lhsIdataGam) of
{ _errorExprOdataGam ->
(case (errorExpr_2 _errorExprOdataGam _errorExprOevalCtx _errorExprOisTopApp _errorExprOisTopTup _errorExprOlamMp _errorExprOlev _errorExprOmodNm _errorExprOopts _errorExprOwhatAbove) of
{ ( _errorExprIappFunKind,_errorExprIfvS,_errorExprImbFFIApp,_errorExprImbLam,_errorExprImbVar,_errorExprIwhatBelow) ->
(case (_errorExprIappFunKind) of
{ _lhsOappFunKind ->
(case (_errorExprIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (_errorExprImbLam) of
{ _lhsOmbLam ->
(case (_errorExprImbVar) of
{ _lhsOmbVar ->
(case (_errorExprIwhatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_CaseAltFail_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }))
in sem_CExpr_CaseAltFail_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) }) })
sem_CExpr_TupDel :: T_CExpr ->
CTag ->
HsName ->
T_CExpr ->
T_CExpr
sem_CExpr_TupDel expr_ tag_ nm_ offset_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_TupDel_1 :: T_CExpr_1
sem_CExpr_TupDel_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup8 ->
(case (__tup8) of
{ (_exprOgUniq,_) ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _offsetOgUniq ->
(case (offset_) of
{ ( _offsetIgathLamMp,_offsetIgrLamArgL,offset_1) ->
(case (offset_1 _offsetOgUniq) of
{ ( _offsetIgUniq,offset_2) ->
(case (_offsetIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_TupDel_2 :: T_CExpr_2
sem_CExpr_TupDel_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _offsetOwhatAbove ->
(case (_lhsIopts) of
{ _offsetOopts ->
(case (_lhsImodNm) of
{ _offsetOmodNm ->
(case (_lhsIlev) of
{ _offsetOlev ->
(case (_lhsIlamMp) of
{ _offsetOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _offsetOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _offsetOisTopApp ->
(case (_lhsIevalCtx) of
{ _offsetOevalCtx ->
(case (_lhsIdataGam) of
{ _offsetOdataGam ->
(case (offset_2 _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmodNm _offsetOopts _offsetOwhatAbove) of
{ ( _offsetIappFunKind,_offsetIfvS,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIwhatBelow) ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_isTopApp) of
{ _exprOisTopApp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (False) of
{ _exprOisTopTup ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS `Set.union` _offsetIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_TupDel_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }) }) }) }))
in sem_CExpr_TupDel_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_TupIns :: T_CExpr ->
CTag ->
HsName ->
T_CExpr ->
T_CExpr ->
T_CExpr
sem_CExpr_TupIns expr_ tag_ nm_ offset_ fldExpr_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_TupIns_1 :: T_CExpr_1
sem_CExpr_TupIns_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup9 ->
(case (__tup9) of
{ (_exprOgUniq,_) ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _offsetOgUniq ->
(case (offset_) of
{ ( _offsetIgathLamMp,_offsetIgrLamArgL,offset_1) ->
(case (offset_1 _offsetOgUniq) of
{ ( _offsetIgUniq,offset_2) ->
(case (_offsetIgUniq) of
{ _fldExprOgUniq ->
(case (fldExpr_) of
{ ( _fldExprIgathLamMp,_fldExprIgrLamArgL,fldExpr_1) ->
(case (fldExpr_1 _fldExprOgUniq) of
{ ( _fldExprIgUniq,fldExpr_2) ->
(case (_fldExprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_TupIns_2 :: T_CExpr_2
sem_CExpr_TupIns_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _fldExprOwhatAbove ->
(case (_lhsIopts) of
{ _fldExprOopts ->
(case (_lhsImodNm) of
{ _fldExprOmodNm ->
(case (_lhsIlev) of
{ _fldExprOlev ->
(case (_lhsIlamMp) of
{ _fldExprOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _fldExprOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _fldExprOisTopApp ->
(case (_lhsIevalCtx) of
{ _fldExprOevalCtx ->
(case (_lhsIdataGam) of
{ _fldExprOdataGam ->
(case (fldExpr_2 _fldExprOdataGam _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlamMp _fldExprOlev _fldExprOmodNm _fldExprOopts _fldExprOwhatAbove) of
{ ( _fldExprIappFunKind,_fldExprIfvS,_fldExprImbFFIApp,_fldExprImbLam,_fldExprImbVar,_fldExprIwhatBelow) ->
(case (_whatAbove) of
{ _offsetOwhatAbove ->
(case (_lhsIopts) of
{ _offsetOopts ->
(case (_lhsImodNm) of
{ _offsetOmodNm ->
(case (_lhsIlev) of
{ _offsetOlev ->
(case (_lhsIlamMp) of
{ _offsetOlamMp ->
(case (_isTopTup) of
{ _offsetOisTopTup ->
(case (_isTopApp) of
{ _offsetOisTopApp ->
(case (_lhsIevalCtx) of
{ _offsetOevalCtx ->
(case (_lhsIdataGam) of
{ _offsetOdataGam ->
(case (offset_2 _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmodNm _offsetOopts _offsetOwhatAbove) of
{ ( _offsetIappFunKind,_offsetIfvS,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIwhatBelow) ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_isTopApp) of
{ _exprOisTopApp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (False) of
{ _exprOisTopTup ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_TupIns_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_TupIns_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_TupUpd :: T_CExpr ->
CTag ->
HsName ->
T_CExpr ->
T_CExpr ->
T_CExpr
sem_CExpr_TupUpd expr_ tag_ nm_ offset_ fldExpr_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_TupUpd_1 :: T_CExpr_1
sem_CExpr_TupUpd_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup10 ->
(case (__tup10) of
{ (_exprOgUniq,_) ->
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _offsetOgUniq ->
(case (offset_) of
{ ( _offsetIgathLamMp,_offsetIgrLamArgL,offset_1) ->
(case (offset_1 _offsetOgUniq) of
{ ( _offsetIgUniq,offset_2) ->
(case (_offsetIgUniq) of
{ _fldExprOgUniq ->
(case (fldExpr_) of
{ ( _fldExprIgathLamMp,_fldExprIgrLamArgL,fldExpr_1) ->
(case (fldExpr_1 _fldExprOgUniq) of
{ ( _fldExprIgUniq,fldExpr_2) ->
(case (_fldExprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_TupUpd_2 :: T_CExpr_2
sem_CExpr_TupUpd_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _fldExprOwhatAbove ->
(case (_lhsIopts) of
{ _fldExprOopts ->
(case (_lhsImodNm) of
{ _fldExprOmodNm ->
(case (_lhsIlev) of
{ _fldExprOlev ->
(case (_lhsIlamMp) of
{ _fldExprOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _fldExprOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _fldExprOisTopApp ->
(case (_lhsIevalCtx) of
{ _fldExprOevalCtx ->
(case (_lhsIdataGam) of
{ _fldExprOdataGam ->
(case (fldExpr_2 _fldExprOdataGam _fldExprOevalCtx _fldExprOisTopApp _fldExprOisTopTup _fldExprOlamMp _fldExprOlev _fldExprOmodNm _fldExprOopts _fldExprOwhatAbove) of
{ ( _fldExprIappFunKind,_fldExprIfvS,_fldExprImbFFIApp,_fldExprImbLam,_fldExprImbVar,_fldExprIwhatBelow) ->
(case (_whatAbove) of
{ _offsetOwhatAbove ->
(case (_lhsIopts) of
{ _offsetOopts ->
(case (_lhsImodNm) of
{ _offsetOmodNm ->
(case (_lhsIlev) of
{ _offsetOlev ->
(case (_lhsIlamMp) of
{ _offsetOlamMp ->
(case (_isTopTup) of
{ _offsetOisTopTup ->
(case (_isTopApp) of
{ _offsetOisTopApp ->
(case (_lhsIevalCtx) of
{ _offsetOevalCtx ->
(case (_lhsIdataGam) of
{ _offsetOdataGam ->
(case (offset_2 _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmodNm _offsetOopts _offsetOwhatAbove) of
{ ( _offsetIappFunKind,_offsetIfvS,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIwhatBelow) ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_isTopApp) of
{ _exprOisTopApp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (False) of
{ _exprOisTopTup ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS `Set.union` _offsetIfvS `Set.union` _fldExprIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_TupUpd_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_TupUpd_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_FFI :: FFIWay ->
String ->
ForeignEnt ->
Ty ->
T_CExpr
sem_CExpr_FFI callconv_ safety_ impEnt_ ty_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_FFI_1 :: T_CExpr_1
sem_CExpr_FFI_1 =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup11 ->
(case (__tup11) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CExpr_FFI_2 :: T_CExpr_2
sem_CExpr_FFI_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_FFI) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (foreignEntExtract impEnt_) of
{ _foreignEntInfo ->
(case (maybe Nothing lookupPrimNeedsEval $ forextractMbEnt _foreignEntInfo) of
{ _mbPrimNeedEval ->
(case (maybe False primResNeedEval _mbPrimNeedEval) of
{ _primResNeedsEval ->
(case (appUnArr ty_) of
{ _argTyLresTy ->
(case (snd _argTyLresTy) of
{ _resTy ->
(case (fst _argTyLresTy) of
{ _argTyL ->
(case (Just ( _resTy
, _primResNeedsEval
, callconv_
, impEnt_
, _argTyL
)) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsFFI) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_FFI_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }))
in sem_CExpr_FFI_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Dbg :: String ->
T_CExpr
sem_CExpr_Dbg info_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Dbg_1 :: T_CExpr_1
sem_CExpr_Dbg_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Dbg_2 :: T_CExpr_2
sem_CExpr_Dbg_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_Dbg_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }))
in sem_CExpr_Dbg_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Hole :: UID ->
T_CExpr
sem_CExpr_Hole uid_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Hole_1 :: T_CExpr_1
sem_CExpr_Hole_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Hole_2 :: T_CExpr_2
sem_CExpr_Hole_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_Hole_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }))
in sem_CExpr_Hole_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_HoleLet :: UID ->
T_CExpr ->
T_CExpr
sem_CExpr_HoleLet bindsUid_ body_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_HoleLet_1 :: T_CExpr_1
sem_CExpr_HoleLet_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _bodyOgUniq ->
(case (body_) of
{ ( _bodyIgathLamMp,_bodyIgrLamArgL,body_1) ->
(case (body_1 _bodyOgUniq) of
{ ( _bodyIgUniq,body_2) ->
(case (_bodyIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_HoleLet_2 :: T_CExpr_2
sem_CExpr_HoleLet_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _bodyOwhatAbove ->
(case (_lhsIopts) of
{ _bodyOopts ->
(case (_lhsImodNm) of
{ _bodyOmodNm ->
(case (_lhsIlev) of
{ _bodyOlev ->
(case (_lhsIlamMp) of
{ _bodyOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _bodyOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _bodyOisTopApp ->
(case (_lhsIevalCtx) of
{ _bodyOevalCtx ->
(case (_lhsIdataGam) of
{ _bodyOdataGam ->
(case (body_2 _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmodNm _bodyOopts _bodyOwhatAbove) of
{ ( _bodyIappFunKind,_bodyIfvS,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIwhatBelow) ->
(case (_bodyIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_HoleLet_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }))
in sem_CExpr_HoleLet_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_CoeArg :: T_CExpr
sem_CExpr_CoeArg =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_CoeArg_1 :: T_CExpr_1
sem_CExpr_CoeArg_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_CoeArg_2 :: T_CExpr_2
sem_CExpr_CoeArg_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (Set.empty) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }))
in sem_CExpr_CoeArg_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }))
in sem_CExpr_CoeArg_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_ImplsApp :: T_CExpr ->
ImplsVarId ->
T_CExpr
sem_CExpr_ImplsApp func_ uid_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_ImplsApp_1 :: T_CExpr_1
sem_CExpr_ImplsApp_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _funcOgUniq ->
(case (func_) of
{ ( _funcIgathLamMp,_funcIgrLamArgL,func_1) ->
(case (func_1 _funcOgUniq) of
{ ( _funcIgUniq,func_2) ->
(case (_funcIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_ImplsApp_2 :: T_CExpr_2
sem_CExpr_ImplsApp_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _funcOwhatAbove ->
(case (_lhsIopts) of
{ _funcOopts ->
(case (_lhsImodNm) of
{ _funcOmodNm ->
(case (_lhsIlev) of
{ _funcOlev ->
(case (_lhsIlamMp) of
{ _funcOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _funcOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _funcOisTopApp ->
(case (_lhsIevalCtx) of
{ _funcOevalCtx ->
(case (_lhsIdataGam) of
{ _funcOdataGam ->
(case (func_2 _funcOdataGam _funcOevalCtx _funcOisTopApp _funcOisTopTup _funcOlamMp _funcOlev _funcOmodNm _funcOopts _funcOwhatAbove) of
{ ( _funcIappFunKind,_funcIfvS,_funcImbFFIApp,_funcImbLam,_funcImbVar,_funcIwhatBelow) ->
(case (_funcIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_ImplsApp_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }))
in sem_CExpr_ImplsApp_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_ImplsLam :: ImplsVarId ->
T_CExpr ->
T_CExpr
sem_CExpr_ImplsLam uid_ body_ =
(case (Map.empty) of
{ _lhsOgathLamMp ->
(case ([]) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_ImplsLam_1 :: T_CExpr_1
sem_CExpr_ImplsLam_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _bodyOgUniq ->
(case (body_) of
{ ( _bodyIgathLamMp,_bodyIgrLamArgL,body_1) ->
(case (body_1 _bodyOgUniq) of
{ ( _bodyIgUniq,body_2) ->
(case (_bodyIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_ImplsLam_2 :: T_CExpr_2
sem_CExpr_ImplsLam_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (AppFunKind_NoApp) of
{ _lhsOappFunKind ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _bodyOwhatAbove ->
(case (_lhsIopts) of
{ _bodyOopts ->
(case (_lhsImodNm) of
{ _bodyOmodNm ->
(case (_lhsIlev) of
{ _bodyOlev ->
(case (_lhsIlamMp) of
{ _bodyOlamMp ->
(case (True) of
{ _isTopTup ->
(case (_isTopTup) of
{ _bodyOisTopTup ->
(case (True) of
{ _isTopApp ->
(case (_isTopApp) of
{ _bodyOisTopApp ->
(case (_lhsIevalCtx) of
{ _bodyOevalCtx ->
(case (_lhsIdataGam) of
{ _bodyOdataGam ->
(case (body_2 _bodyOdataGam _bodyOevalCtx _bodyOisTopApp _bodyOisTopTup _bodyOlamMp _bodyOlev _bodyOmodNm _bodyOopts _bodyOwhatAbove) of
{ ( _bodyIappFunKind,_bodyIfvS,_bodyImbFFIApp,_bodyImbLam,_bodyImbVar,_bodyIwhatBelow) ->
(case (_bodyIfvS) of
{ _lhsOfvS ->
(case (Nothing) of
{ _lhsOmbFFIApp ->
(case (Nothing) of
{ _lhsOmbLam ->
(case (Nothing) of
{ _lhsOmbVar ->
(case (ExprIsOther) of
{ _whatBelow ->
(case (_whatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_ImplsLam_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }))
in sem_CExpr_ImplsLam_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) })
sem_CExpr_Ann :: T_CExprAnn ->
T_CExpr ->
T_CExpr
sem_CExpr_Ann ann_ expr_ =
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (_exprIgathLamMp) of
{ _lhsOgathLamMp ->
(case (_exprIgrLamArgL) of
{ _lhsOgrLamArgL ->
(case ((let sem_CExpr_Ann_1 :: T_CExpr_1
sem_CExpr_Ann_1 =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _annOgUniq ->
(case (ann_ _annOgUniq) of
{ ( _annIgUniq,ann_1) ->
(case (_annIgUniq) of
{ _exprOgUniq ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (_exprIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExpr_Ann_2 :: T_CExpr_2
sem_CExpr_Ann_2 =
(\ _lhsIdataGam
_lhsIevalCtx
_lhsIisTopApp
_lhsIisTopTup
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts
_lhsIwhatAbove ->
(case (_lhsIwhatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsImodNm) of
{ _exprOmodNm ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (_lhsIisTopTup) of
{ _exprOisTopTup ->
(case (_lhsIisTopApp) of
{ _exprOisTopApp ->
(case (_lhsIevalCtx) of
{ _exprOevalCtx ->
(case (_lhsIdataGam) of
{ _exprOdataGam ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIappFunKind) of
{ _lhsOappFunKind ->
(case (_lhsIopts) of
{ _annOopts ->
(case (_lhsImodNm) of
{ _annOmodNm ->
(case (_lhsIlev) of
{ _annOlev ->
(case (_lhsIlamMp) of
{ _annOlamMp ->
(case (_lhsIdataGam) of
{ _annOdataGam ->
(case (ann_1 _annOdataGam _annOlamMp _annOlev _annOmodNm _annOopts) of
{ ( _annIfvS) ->
(case (_annIfvS `Set.union` _exprIfvS) of
{ _lhsOfvS ->
(case (_exprImbFFIApp) of
{ _lhsOmbFFIApp ->
(case (_exprImbLam) of
{ _lhsOmbLam ->
(case (_exprImbVar) of
{ _lhsOmbVar ->
(case (_exprIwhatBelow) of
{ _lhsOwhatBelow ->
( _lhsOappFunKind,_lhsOfvS,_lhsOmbFFIApp,_lhsOmbLam,_lhsOmbVar,_lhsOwhatBelow) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CExpr_Ann_2)) of
{ ( sem_CExpr_2) ->
( _lhsOgUniq,sem_CExpr_2) }) }) }) }) }) }))
in sem_CExpr_Ann_1)) of
{ ( sem_CExpr_1) ->
( _lhsOgathLamMp,_lhsOgrLamArgL,sem_CExpr_1) }) }) }) })
-- CExprAnn ----------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attribute:
fvS : FvS
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 = UID ->
( UID,T_CExprAnn_1)
type T_CExprAnn_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS)
sem_CExprAnn_Ty :: Ty ->
T_CExprAnn
sem_CExprAnn_Ty ty_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExprAnn_Ty_1 :: T_CExprAnn_1
sem_CExprAnn_Ty_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
in sem_CExprAnn_Ty_1)) of
{ ( sem_CExprAnn_1) ->
( _lhsOgUniq,sem_CExprAnn_1) }) }))
sem_CExprAnn_Debug :: String ->
T_CExprAnn
sem_CExprAnn_Debug info_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CExprAnn_Debug_1 :: T_CExprAnn_1
sem_CExprAnn_Debug_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
in sem_CExprAnn_Debug_1)) of
{ ( sem_CExprAnn_1) ->
( _lhsOgUniq,sem_CExprAnn_1) }) }))
-- CImport -----------------------------------------------------
{-
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 = ( )
sem_CImport_Import :: HsName ->
T_CImport
sem_CImport_Import nm_ =
( )
-- CImportL ----------------------------------------------------
{-
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 = ( )
sem_CImportL_Cons :: T_CImport ->
T_CImportL ->
T_CImportL
sem_CImportL_Cons hd_ tl_ =
( )
sem_CImportL_Nil :: T_CImportL
sem_CImportL_Nil =
( )
-- CMetaBind ---------------------------------------------------
{-
visit 0:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attribute:
fvS : FvS
alternatives:
alternative Plain:
alternative Function0:
alternative Function1:
alternative Apply0:
-}
-- cata
sem_CMetaBind :: CMetaBind ->
T_CMetaBind
sem_CMetaBind (CMetaBind_Plain) =
(sem_CMetaBind_Plain)
sem_CMetaBind (CMetaBind_Function0) =
(sem_CMetaBind_Function0)
sem_CMetaBind (CMetaBind_Function1) =
(sem_CMetaBind_Function1)
sem_CMetaBind (CMetaBind_Apply0) =
(sem_CMetaBind_Apply0)
-- semantic domain
type T_CMetaBind = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS)
sem_CMetaBind_Plain :: T_CMetaBind
sem_CMetaBind_Plain =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaBind_Function0 :: T_CMetaBind
sem_CMetaBind_Function0 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaBind_Function1 :: T_CMetaBind
sem_CMetaBind_Function1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaBind_Apply0 :: T_CMetaBind
sem_CMetaBind_Apply0 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
-- CMetaVal ----------------------------------------------------
{-
visit 0:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attribute:
fvS : FvS
alternatives:
alternative Val:
alternative Dict:
alternative DictClass:
child tracks : {[Track]}
alternative DictInstance:
child tracks : {[Track]}
alternative Track:
child track : {Track}
-}
-- cata
sem_CMetaVal :: CMetaVal ->
T_CMetaVal
sem_CMetaVal (CMetaVal_Val) =
(sem_CMetaVal_Val)
sem_CMetaVal (CMetaVal_Dict) =
(sem_CMetaVal_Dict)
sem_CMetaVal (CMetaVal_DictClass _tracks) =
(sem_CMetaVal_DictClass _tracks)
sem_CMetaVal (CMetaVal_DictInstance _tracks) =
(sem_CMetaVal_DictInstance _tracks)
sem_CMetaVal (CMetaVal_Track _track) =
(sem_CMetaVal_Track _track)
-- semantic domain
type T_CMetaVal = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS)
sem_CMetaVal_Val :: T_CMetaVal
sem_CMetaVal_Val =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaVal_Dict :: T_CMetaVal
sem_CMetaVal_Dict =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaVal_DictClass :: ([Track]) ->
T_CMetaVal
sem_CMetaVal_DictClass tracks_ =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaVal_DictInstance :: ([Track]) ->
T_CMetaVal
sem_CMetaVal_DictInstance tracks_ =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
sem_CMetaVal_Track :: Track ->
T_CMetaVal
sem_CMetaVal_Track track_ =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
( _lhsOfvS) }))
-- CMetas ------------------------------------------------------
{-
visit 0:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attribute:
fvS : FvS
alternatives:
alternative Tuple:
child x1 : CMetaBind
child x2 : CMetaVal
-}
-- cata
sem_CMetas :: CMetas ->
T_CMetas
sem_CMetas ( x1,x2) =
(sem_CMetas_Tuple (sem_CMetaBind x1) (sem_CMetaVal x2))
-- semantic domain
type T_CMetas = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS)
sem_CMetas_Tuple :: T_CMetaBind ->
T_CMetaVal ->
T_CMetas
sem_CMetas_Tuple x1_ x2_ =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _x2Oopts ->
(case (_lhsImodNm) of
{ _x2OmodNm ->
(case (_lhsIlev) of
{ _x2Olev ->
(case (_lhsIlamMp) of
{ _x2OlamMp ->
(case (_lhsIdataGam) of
{ _x2OdataGam ->
(case (x2_ _x2OdataGam _x2OlamMp _x2Olev _x2OmodNm _x2Oopts) of
{ ( _x2IfvS) ->
(case (_lhsIopts) of
{ _x1Oopts ->
(case (_lhsImodNm) of
{ _x1OmodNm ->
(case (_lhsIlev) of
{ _x1Olev ->
(case (_lhsIlamMp) of
{ _x1OlamMp ->
(case (_lhsIdataGam) of
{ _x1OdataGam ->
(case (x1_ _x1OdataGam _x1OlamMp _x1Olev _x1OmodNm _x1Oopts) of
{ ( _x1IfvS) ->
(case (_x1IfvS `Set.union` _x2IfvS) of
{ _lhsOfvS ->
( _lhsOfvS) }) }) }) }) }) }) }) }) }) }) }) }) }))
-- CModule -----------------------------------------------------
{-
visit 0:
synthesized attribute:
gathLamMp : LamMp
visit 1:
inherited attributes:
dataGam : DataGam
importUsedModules : ImportUsedModules
lamMp : LamMp
lev : Int
opts : EHCOpts
chained attribute:
gUniq : UID
synthesized attributes:
fvS : FvS
gathDataGam : DataGam
alternatives:
alternative Mod:
child moduleNm : {HsName}
child exports : CExportL
child imports : CImportL
child declMetas : CDeclMetaL
child expr : CExpr
visit 1:
local whatAbove : {WhatExpr}
local dataGam : _
-}
-- 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 = ( LamMp,T_CModule_1)
type T_CModule_1 = DataGam ->
UID ->
ImportUsedModules ->
LamMp ->
Int ->
EHCOpts ->
( FvS,UID,DataGam)
sem_CModule_Mod :: HsName ->
T_CExportL ->
T_CImportL ->
T_CDeclMetaL ->
T_CExpr ->
T_CModule
sem_CModule_Mod moduleNm_ exports_ imports_ declMetas_ expr_ =
(case (expr_) of
{ ( _exprIgathLamMp,_exprIgrLamArgL,expr_1) ->
(case (_exprIgathLamMp) of
{ _lhsOgathLamMp ->
(case ((let sem_CModule_Mod_1 :: T_CModule_1
sem_CModule_Mod_1 =
(\ _lhsIdataGam
_lhsIgUniq
_lhsIimportUsedModules
_lhsIlamMp
_lhsIlev
_lhsIopts ->
(case (_lhsIgUniq) of
{ _exprOgUniq ->
(case (expr_1 _exprOgUniq) of
{ ( _exprIgUniq,expr_2) ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _exprOwhatAbove ->
(case (_lhsIopts) of
{ _exprOopts ->
(case (_lhsIlev) of
{ _exprOlev ->
(case (_lhsIlamMp) of
{ _exprOlamMp ->
(case (declMetas_) of
{ ( _declMetasIgathDataGam) ->
(case (_lhsIdataGam `gamUnion` _declMetasIgathDataGam) of
{ _dataGam ->
(case (_dataGam) of
{ _exprOdataGam ->
(case (moduleNm_) of
{ _exprOmodNm ->
(case (EvalCtx_Eval) of
{ _exprOevalCtx ->
(case (True) of
{ _exprOisTopTup ->
(case (True) of
{ _exprOisTopApp ->
(case (expr_2 _exprOdataGam _exprOevalCtx _exprOisTopApp _exprOisTopTup _exprOlamMp _exprOlev _exprOmodNm _exprOopts _exprOwhatAbove) of
{ ( _exprIappFunKind,_exprIfvS,_exprImbFFIApp,_exprImbLam,_exprImbVar,_exprIwhatBelow) ->
(case (_exprIfvS) of
{ _lhsOfvS ->
(case (_exprIgUniq) of
{ _lhsOgUniq ->
(case (_declMetasIgathDataGam) of
{ _lhsOgathDataGam ->
( _lhsOfvS,_lhsOgUniq,_lhsOgathDataGam) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CModule_Mod_1)) of
{ ( sem_CModule_1) ->
( _lhsOgathLamMp,sem_CModule_1) }) }) })
-- CPat --------------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fldNmL : [HsName]
fvS : FvS
nmL : [HsName]
alternatives:
alternative Var:
child pnm : {HsName}
alternative Con:
child tag : {CTag}
child rest : CPatRest
child binds : CPatFldL
visit 0:
local _tup12 : _
alternative Int:
child int : {Int}
visit 0:
local _tup13 : _
alternative Char:
child char : {Char}
visit 0:
local _tup14 : _
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 = UID ->
( UID,T_CPat_1)
type T_CPat_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( ([HsName]),FvS,([HsName]))
sem_CPat_Var :: HsName ->
T_CPat
sem_CPat_Var pnm_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPat_Var_1 :: T_CPat_1
sem_CPat_Var_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case ([]) of
{ _lhsOfldNmL ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([pnm_]) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }))
in sem_CPat_Var_1)) of
{ ( sem_CPat_1) ->
( _lhsOgUniq,sem_CPat_1) }) }))
sem_CPat_Con :: CTag ->
T_CPatRest ->
T_CPatFldL ->
T_CPat
sem_CPat_Con tag_ rest_ binds_ =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup12 ->
(case (__tup12) of
{ (_restOgUniq,_) ->
(case (rest_ _restOgUniq) of
{ ( _restIgUniq,rest_1) ->
(case (_restIgUniq) of
{ _bindsOgUniq ->
(case (binds_ _bindsOgUniq) of
{ ( _bindsIgUniq,binds_1) ->
(case (_bindsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPat_Con_1 :: T_CPat_1
sem_CPat_Con_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _bindsOopts ->
(case (_lhsImodNm) of
{ _bindsOmodNm ->
(case (_lhsIlev) of
{ _bindsOlev ->
(case (_lhsIlamMp) of
{ _bindsOlamMp ->
(case (_lhsIdataGam) of
{ _bindsOdataGam ->
(case (binds_1 _bindsOdataGam _bindsOlamMp _bindsOlev _bindsOmodNm _bindsOopts) of
{ ( _bindsIfldNmL,_bindsIfvS,_bindsInmL) ->
(case (_bindsIfldNmL) of
{ _lhsOfldNmL ->
(case (_lhsIopts) of
{ _restOopts ->
(case (_lhsImodNm) of
{ _restOmodNm ->
(case (_lhsIlev) of
{ _restOlev ->
(case (_lhsIlamMp) of
{ _restOlamMp ->
(case (_lhsIdataGam) of
{ _restOdataGam ->
(case (rest_1 _restOdataGam _restOlamMp _restOlev _restOmodNm _restOopts) of
{ ( _restIfvS,_restInmL) ->
(case (_restIfvS `Set.union` _bindsIfvS) of
{ _lhsOfvS ->
(case (_restInmL ++ _bindsInmL) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CPat_Con_1)) of
{ ( sem_CPat_1) ->
( _lhsOgUniq,sem_CPat_1) }) }) }) }) }) }) }))
sem_CPat_Int :: Int ->
T_CPat
sem_CPat_Int int_ =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup13 ->
(case (__tup13) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CPat_Int_1 :: T_CPat_1
sem_CPat_Int_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case ([]) of
{ _lhsOfldNmL ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }))
in sem_CPat_Int_1)) of
{ ( sem_CPat_1) ->
( _lhsOgUniq,sem_CPat_1) }) }) }))
sem_CPat_Char :: Char ->
T_CPat
sem_CPat_Char char_ =
(\ _lhsIgUniq ->
(case (let __cont = _lhsIgUniq in seq __cont ( case nextUnique __cont of { (__cont, lUniq) -> (__cont,lUniq)} )) of
{ __tup14 ->
(case (__tup14) of
{ (_lhsOgUniq,_) ->
(case ((let sem_CPat_Char_1 :: T_CPat_1
sem_CPat_Char_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case ([]) of
{ _lhsOfldNmL ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }))
in sem_CPat_Char_1)) of
{ ( sem_CPat_1) ->
( _lhsOgUniq,sem_CPat_1) }) }) }))
sem_CPat_BoolExpr :: CExpr ->
T_CPat
sem_CPat_BoolExpr cexpr_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPat_BoolExpr_1 :: T_CPat_1
sem_CPat_BoolExpr_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case ([]) of
{ _lhsOfldNmL ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }))
in sem_CPat_BoolExpr_1)) of
{ ( sem_CPat_1) ->
( _lhsOgUniq,sem_CPat_1) }) }))
-- CPatFld -----------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fldNmL : [HsName]
fvS : FvS
nmL : [HsName]
alternatives:
alternative Fld:
child lbl : {HsName}
child offset : CExpr
child bind : CBind
child fldAnns : CBindAnnL
visit 1:
local fldNm : _
local whatAbove : {WhatExpr}
-}
-- 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 = UID ->
( UID,T_CPatFld_1)
type T_CPatFld_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( ([HsName]),FvS,([HsName]))
sem_CPatFld_Fld :: HsName ->
T_CExpr ->
T_CBind ->
T_CBindAnnL ->
T_CPatFld
sem_CPatFld_Fld lbl_ offset_ bind_ fldAnns_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _offsetOgUniq ->
(case (offset_) of
{ ( _offsetIgathLamMp,_offsetIgrLamArgL,offset_1) ->
(case (offset_1 _offsetOgUniq) of
{ ( _offsetIgUniq,offset_2) ->
(case (_offsetIgUniq) of
{ _bindOgUniq ->
(case (bind_) of
{ ( _bindIbindLamMp,_bindInm,bind_1) ->
(case (bind_1 _bindOgUniq) of
{ ( _bindIgUniq,bind_2) ->
(case (_bindIgUniq) of
{ _fldAnnsOgUniq ->
(case (fldAnns_ _fldAnnsOgUniq) of
{ ( _fldAnnsIgUniq,fldAnns_1) ->
(case (_fldAnnsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPatFld_Fld_1 :: T_CPatFld_1
sem_CPatFld_Fld_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_bindInm) of
{ _fldNm ->
(case ([_fldNm]) of
{ _lhsOfldNmL ->
(case (_lhsIopts) of
{ _fldAnnsOopts ->
(case (_lhsImodNm) of
{ _fldAnnsOmodNm ->
(case (_lhsIlev) of
{ _fldAnnsOlev ->
(case (_lhsIlamMp) of
{ _fldAnnsOlamMp ->
(case (_lhsIdataGam) of
{ _fldAnnsOdataGam ->
(case (fldAnns_1 _fldAnnsOdataGam _fldAnnsOlamMp _fldAnnsOlev _fldAnnsOmodNm _fldAnnsOopts) of
{ ( _fldAnnsIfvS,_fldAnnsInmL) ->
(case (_lhsIopts) of
{ _bindOopts ->
(case (_lhsImodNm) of
{ _bindOmodNm ->
(case (_lhsIlev) of
{ _bindOlev ->
(case (_lhsIlamMp) of
{ _bindOlamMp ->
(case (_lhsIdataGam) of
{ _bindOdataGam ->
(case (False) of
{ _bindOisGlobal ->
(case (EvalCtx_None) of
{ _bindOevalCtx ->
(case (acoreBindcategPlain) of
{ _bindOletBindingsCateg ->
(case (bind_2 _bindOdataGam _bindOevalCtx _bindOisGlobal _bindOlamMp _bindOletBindingsCateg _bindOlev _bindOmodNm _bindOopts) of
{ ( _bindIfvS,_bindIfvSMp,_bindInmL) ->
(case (ExprIsOther) of
{ _whatAbove ->
(case (_whatAbove) of
{ _offsetOwhatAbove ->
(case (_lhsIopts) of
{ _offsetOopts ->
(case (_lhsImodNm) of
{ _offsetOmodNm ->
(case (_lhsIlev) of
{ _offsetOlev ->
(case (_lhsIlamMp) of
{ _offsetOlamMp ->
(case (_lhsIdataGam) of
{ _offsetOdataGam ->
(case (EvalCtx_Eval) of
{ _offsetOevalCtx ->
(case (True) of
{ _offsetOisTopTup ->
(case (True) of
{ _offsetOisTopApp ->
(case (offset_2 _offsetOdataGam _offsetOevalCtx _offsetOisTopApp _offsetOisTopTup _offsetOlamMp _offsetOlev _offsetOmodNm _offsetOopts _offsetOwhatAbove) of
{ ( _offsetIappFunKind,_offsetIfvS,_offsetImbFFIApp,_offsetImbLam,_offsetImbVar,_offsetIwhatBelow) ->
(case (_offsetIfvS `Set.union` _bindIfvS `Set.union` _fldAnnsIfvS) of
{ _lhsOfvS ->
(case ([_fldNm]) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CPatFld_Fld_1)) of
{ ( sem_CPatFld_1) ->
( _lhsOgUniq,sem_CPatFld_1) }) }) }) }) }) }) }) }) }) }))
-- CPatFldL ----------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fldNmL : [HsName]
fvS : FvS
nmL : [HsName]
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 = UID ->
( UID,T_CPatFldL_1)
type T_CPatFldL_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( ([HsName]),FvS,([HsName]))
sem_CPatFldL_Cons :: T_CPatFld ->
T_CPatFldL ->
T_CPatFldL
sem_CPatFldL_Cons hd_ tl_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _hdOgUniq ->
(case (hd_ _hdOgUniq) of
{ ( _hdIgUniq,hd_1) ->
(case (_hdIgUniq) of
{ _tlOgUniq ->
(case (tl_ _tlOgUniq) of
{ ( _tlIgUniq,tl_1) ->
(case (_tlIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPatFldL_Cons_1 :: T_CPatFldL_1
sem_CPatFldL_Cons_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (_lhsIopts) of
{ _tlOopts ->
(case (_lhsImodNm) of
{ _tlOmodNm ->
(case (_lhsIlev) of
{ _tlOlev ->
(case (_lhsIlamMp) of
{ _tlOlamMp ->
(case (_lhsIdataGam) of
{ _tlOdataGam ->
(case (tl_1 _tlOdataGam _tlOlamMp _tlOlev _tlOmodNm _tlOopts) of
{ ( _tlIfldNmL,_tlIfvS,_tlInmL) ->
(case (_lhsIopts) of
{ _hdOopts ->
(case (_lhsImodNm) of
{ _hdOmodNm ->
(case (_lhsIlev) of
{ _hdOlev ->
(case (_lhsIlamMp) of
{ _hdOlamMp ->
(case (_lhsIdataGam) of
{ _hdOdataGam ->
(case (hd_1 _hdOdataGam _hdOlamMp _hdOlev _hdOmodNm _hdOopts) of
{ ( _hdIfldNmL,_hdIfvS,_hdInmL) ->
(case (_hdIfldNmL ++ _tlIfldNmL) of
{ _lhsOfldNmL ->
(case (_hdIfvS `Set.union` _tlIfvS) of
{ _lhsOfvS ->
(case (_hdInmL ++ _tlInmL) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }))
in sem_CPatFldL_Cons_1)) of
{ ( sem_CPatFldL_1) ->
( _lhsOgUniq,sem_CPatFldL_1) }) }) }) }) }) }))
sem_CPatFldL_Nil :: T_CPatFldL
sem_CPatFldL_Nil =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPatFldL_Nil_1 :: T_CPatFldL_1
sem_CPatFldL_Nil_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case ([]) of
{ _lhsOfldNmL ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfldNmL,_lhsOfvS,_lhsOnmL) }) }) }))
in sem_CPatFldL_Nil_1)) of
{ ( sem_CPatFldL_1) ->
( _lhsOgUniq,sem_CPatFldL_1) }) }))
-- CPatRest ----------------------------------------------------
{-
visit 0:
chained attribute:
gUniq : UID
visit 1:
inherited attributes:
dataGam : DataGam
lamMp : LamMp
lev : Int
modNm : HsName
opts : EHCOpts
synthesized attributes:
fvS : FvS
nmL : [HsName]
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 = UID ->
( UID,T_CPatRest_1)
type T_CPatRest_1 = DataGam ->
LamMp ->
Int ->
HsName ->
EHCOpts ->
( FvS,([HsName]))
sem_CPatRest_Var :: HsName ->
T_CPatRest
sem_CPatRest_Var nm_ =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPatRest_Var_1 :: T_CPatRest_1
sem_CPatRest_Var_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([nm_]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOnmL) }) }))
in sem_CPatRest_Var_1)) of
{ ( sem_CPatRest_1) ->
( _lhsOgUniq,sem_CPatRest_1) }) }))
sem_CPatRest_Empty :: T_CPatRest
sem_CPatRest_Empty =
(\ _lhsIgUniq ->
(case (_lhsIgUniq) of
{ _lhsOgUniq ->
(case ((let sem_CPatRest_Empty_1 :: T_CPatRest_1
sem_CPatRest_Empty_1 =
(\ _lhsIdataGam
_lhsIlamMp
_lhsIlev
_lhsImodNm
_lhsIopts ->
(case (Set.empty) of
{ _lhsOfvS ->
(case ([]) of
{ _lhsOnmL ->
( _lhsOfvS,_lhsOnmL) }) }))
in sem_CPatRest_Empty_1)) of
{ ( sem_CPatRest_1) ->
( _lhsOgUniq,sem_CPatRest_1) }) }))
-- CodeAGItf ---------------------------------------------------
{-
visit 0:
inherited attributes:
dataGam : DataGam
gUniq : UID
importUsedModules : ImportUsedModules
lamMp : LamMp
opts : EHCOpts
synthesized attributes:
gathDataGam : DataGam
gathLamMp : LamMp
alternatives:
alternative AGItf:
child module : CModule
visit 0:
local howMergeLamInfo : _
local gathLamMp : _
local howUnionGathLamInfo : _
-}
-- cata
sem_CodeAGItf :: CodeAGItf ->
T_CodeAGItf
sem_CodeAGItf (CodeAGItf_AGItf _module) =
(sem_CodeAGItf_AGItf (sem_CModule _module))
-- semantic domain
type T_CodeAGItf = DataGam ->
UID ->
ImportUsedModules ->
LamMp ->
EHCOpts ->
( DataGam,LamMp)
data Inh_CodeAGItf = Inh_CodeAGItf {dataGam_Inh_CodeAGItf :: !(DataGam),gUniq_Inh_CodeAGItf :: !(UID),importUsedModules_Inh_CodeAGItf :: !(ImportUsedModules),lamMp_Inh_CodeAGItf :: !(LamMp),opts_Inh_CodeAGItf :: !(EHCOpts)}
data Syn_CodeAGItf = Syn_CodeAGItf {gathDataGam_Syn_CodeAGItf :: !(DataGam),gathLamMp_Syn_CodeAGItf :: !(LamMp)}
wrap_CodeAGItf :: T_CodeAGItf ->
Inh_CodeAGItf ->
Syn_CodeAGItf
wrap_CodeAGItf sem (Inh_CodeAGItf _lhsIdataGam _lhsIgUniq _lhsIimportUsedModules _lhsIlamMp _lhsIopts) =
(let ( _lhsOgathDataGam,_lhsOgathLamMp) = sem _lhsIdataGam _lhsIgUniq _lhsIimportUsedModules _lhsIlamMp _lhsIopts
in (Syn_CodeAGItf _lhsOgathDataGam _lhsOgathLamMp))
sem_CodeAGItf_AGItf :: T_CModule ->
T_CodeAGItf
sem_CodeAGItf_AGItf module_ =
(\ _lhsIdataGam
_lhsIgUniq
_lhsIimportUsedModules
_lhsIlamMp
_lhsIopts ->
(case (module_) of
{ ( _moduleIgathLamMp,module_1) ->
(case (_lhsIopts) of
{ _moduleOopts ->
(case (_lhsIimportUsedModules) of
{ _moduleOimportUsedModules ->
(case (_lhsIgUniq) of
{ _moduleOgUniq ->
(case (_lhsIdataGam) of
{ _moduleOdataGam ->
(case (cLevModule) of
{ _moduleOlev ->
(case ((\(LamInfo {laminfoArity=a}) i -> i {laminfoArity=a})) of
{ _howMergeLamInfo ->
(case (lamMpMergeInto _howMergeLamInfo const _moduleIgathLamMp _lhsIlamMp) of
{ _gathLamMp ->
(case (Map.union _gathLamMp) of
{ _howUnionGathLamInfo ->
(case (_howUnionGathLamInfo _lhsIlamMp) of
{ _moduleOlamMp ->
(case (module_1 _moduleOdataGam _moduleOgUniq _moduleOimportUsedModules _moduleOlamMp _moduleOlev _moduleOopts) of
{ ( _moduleIfvS,_moduleIgUniq,_moduleIgathDataGam) ->
(case (_moduleIgathDataGam) of
{ _lhsOgathDataGam ->
(case (_gathLamMp) of
{ _lhsOgathLamMp ->
( _lhsOgathDataGam,_lhsOgathLamMp) }) }) }) }) }) }) }) }) }) }) }) }) }))