-- UUAGC 0.9.52.1 (build/103/lib-ehc/UHC/Light/Compiler/Ty/Pretty.ag) module UHC.Light.Compiler.Ty.Pretty(ppTyWithCfg', ppTyWithCfg, ppTy , CfgPPTy , ppTyPr , ppImplsWithCfg , ppPredOccId' , ppTyDt , cfgPPTyDT) where import UHC.Util.Utils import UHC.Util.Pretty import UHC.Light.Compiler.Base.HsName.Builtin import UHC.Light.Compiler.Base.Common import UHC.Light.Compiler.Ty import qualified Data.Set as Set import qualified Data.Map as Map import Data.Char import UHC.Light.Compiler.Base.CfgPP import qualified UHC.Util.RLList.LexScope as LexScope data TyQuCtxt = TyQuCtxtArrow | TyQuCtxtProd | TyQuCtxtOnTop | TyQuCtxtOther deriving (Show,Eq) {-| There are some conventions/restrictions on the structure of types that are not enforced by the abstract syntax: Encoding of prove-constraints: concrete syntax: {! impls !} -> ty abstract syntax: Ty_App (Ty_App (Ty_Con "->") (Ty_Impls impls)) ty Encoding of assume-constraints: concrete syntax: (ty, {! pred1 !}, ..., {! predn !}) abstract syntax: Ty_Ext (... (Ty_Ext ty (prod m+1) (Ty_Pred pred_1) ) ...) (prod m+n) (Ty_Pred pred_n) In other words: the predicates are at the outset of a product, pred_n "more outermost" than pred_{n-1}. -} {-| The basic alternatives encode the following: - Con: data type constructors, including tuple constructors - App: application to 1 argument, for example 'a -> b' is encoded as (App (App -> a) b) - Any: representing Bot/Top depending on context: (1) unknown expected type, (2) error type - Var: type variables, including a category: plain tyvars, fixed tyvars (aka skolems) -} ppTyWithCfg' :: CfgPP' x => x -> Ty -> PP_Doc ppTyWithCfg' x ty = pp_Syn_TyAGItf $ synTyWithCfg (cfgPPTy x) ty synTyWithCfg :: CfgPPTy -> Ty -> Syn_TyAGItf synTyWithCfg c ty = wrap_TyAGItf (sem_TyAGItf (TyAGItf_AGItf ty)) (Inh_TyAGItf {cfg_Inh_TyAGItf = c}) ppTyWithCfg :: CfgPPTy -> Ty -> PP_Doc ppTyWithCfg c ty = pp_Syn_TyAGItf $ synTyWithCfg c ty ppTy :: Ty -> PP_Doc ppTy = ppTyWithCfg cfgPPTyDflt ppImplsWithCfg :: CfgPPTy -> Impls -> PP_Doc ppImplsWithCfg c i = ppTyWithCfg c (Ty_Impls i) ppTyDt :: Ty -> PP_Doc ppTyDt = ppTyWithCfg cfgPPTyDT instance PP Ty where pp t = ppTy t ppTyPr :: Ty -> PP_Doc ppTyPr = ppTyWithCfg cfgPPTyPred instance PP FIMode where pp m = pp (show m) instance PP InstTo where pp InstTo_Plain = pp "_" pp (InstTo_Qu q v t k) = t >|< "/" >|< v >|< "@" >|< tyquMetaLev q ppPredOccId' :: CfgPP' x => x -> PredOccId -> PP_Doc ppPredOccId' x poi = ppi (poiId poi) where ppi = cfgppUID x ppPredOccId :: PredOccId -> PP_Doc ppPredOccId poi = "Poi" >|< ppPredOccId' CfgPP_Plain poi instance PP TyKiKey where pp = pp . show instance PP Pred where pp p = ppTyWithCfg cfgPPTyPred (Ty_Pred p) instance PP Impls where pp i = ppTy (Ty_Impls i) instance PP PredOccId where pp = ppPredOccId instance PP PredOcc where pp po = pp (poPr po) >|< "/" >|< pp (poPoi po) >|< "/" >|< pp (poScope po) instance PP CHRPredOccCxt where pp (CHRPredOccCxt_Scope1 sc) = pp sc instance PP CHRPredOcc where pp po = ppParensCommas [ pp (cpoPr po), pp (cpoCxt po) , pp (cpoRange po) ] instance PP PredScope where pp (PredScope_Lev l) = ppListSep "<" ">" "," $ LexScope.toList l pp (PredScope_Var v) = "|< v >|< ">" instance PP ImplsProveOcc where pp o = ipoId o >|< "/" >|< ipoScope o instance PP PredSeq where pp (PredSeq_Cons hd tl) = pp hd >#< ":" >#< pp tl pp (PredSeq_Nil ) = pp "[]" pp (PredSeq_Var u ) = pp u instance PP LabelOffset where pp = pp . show instance PP Label where pp l = pp_Syn_LabelAGItf t where t = wrap_LabelAGItf (sem_LabelAGItf (LabelAGItf_AGItf l)) (Inh_LabelAGItf) data CfgPPTy = CfgPPTy { cfgPPTyPPHsn :: HsName -> PP_Doc , cfgPPTyPPCon :: CfgPPTy -> HsName -> PP_Doc , cfgPPTyPPVar :: CfgPPTy -> UID -> Int -> PP_Doc , cfgPPTyPPVarDflt :: CfgPPTy -> String -> UID -> Maybe PP_Doc -> PP_Doc , cfgPPTyPPImplsPred :: PP_Doc -> PP_Doc -> PP_Doc -> PP_Doc , cfgPPTyPPImplsTailCons :: PP_Doc -> PP_Doc -> PP_Doc , cfgPPTyPPImplsAppWrap :: (PP_Doc -> PP_Doc) -> PP_Doc -> PP_Doc , cfgPPTyCtxt :: TyCtxt , cfgPPTyFollowAST :: Bool , cfgPPTyLhsSafe :: String -> String , cfgPPTyElimEmptyImpls :: Bool } cfgPPTy' :: CfgPP' x => x -> CfgPPTy -> CfgPPTy cfgPPTy' x c = c { cfgPPTyPPHsn = cfgppHsName x , cfgPPTyPPVar = \c u i -> cfgppVarHsName x Nothing (Just u) (Just i) Nothing , cfgPPTyPPCon = \c n -> cfgppConHsName x n , cfgPPTyFollowAST = cfgppFollowAST x , cfgPPTyPPVarDflt = \c pre tv mbpp -> cfgppTyPPVarDflt x pre tv mbpp } cfgPPTy :: CfgPP' x => x -> CfgPPTy cfgPPTy x = cfgPPTy' x cfgPPTyDflt cfgPPTyDflt :: CfgPPTy cfgPPTyDflt = CfgPPTy { cfgPPTyPPHsn = pp , cfgPPTyPPCon = \_ -> ppCon , cfgPPTyPPVar = \c _ i -> ppTnUniq c i , cfgPPTyPPVarDflt = \cfg pre tv mbpp -> maybe (cfgPPTyPPHsn cfg $ mkHNm $ show tv) id mbpp , cfgPPTyPPImplsPred = \iv pr pv -> iv >|< "=" >|< pr >|< "/" >|< pv , cfgPPTyPPImplsTailCons = \pr occs -> pr >|< occs , cfgPPTyPPImplsAppWrap = ($) , cfgPPTyCtxt = TyCtxt_Ty , cfgPPTyFollowAST = False , cfgPPTyLhsSafe = id , cfgPPTyElimEmptyImpls = False } cfgPPTyDT :: CfgPPTy cfgPPTyDT = cfgPPTyDflt { cfgPPTyPPHsn = pp . hsnQualified , cfgPPTyPPCon = \_ -> ppCon . hsnQualified , cfgPPTyPPImplsPred = \_ pr _ -> pr , cfgPPTyPPImplsTailCons = \pr _ -> pr , cfgPPTyPPImplsAppWrap = \_ pr -> pr , cfgPPTyElimEmptyImpls = True , cfgPPTyLhsSafe = let safe '|' = "||" safe '@' = "@@" safe x = [x] in concatMap safe } cfgPPTyPred :: CfgPPTy cfgPPTyPred = cfgPPTyDflt { cfgPPTyCtxt = TyCtxt_Pred } cfgPPTyExtraForHI :: CfgPPTy -> CfgPPTy cfgPPTyExtraForHI c = c { cfgPPTyPPVarDflt = \cfg pre tv mbpp -> maybe (cfgPPTyPPVar cfg cfg tv 0) id mbpp } cfgppAside :: (PP a, PP b) => CfgPPTy -> a -> b -> PP_Doc cfgppAside c a b = if cfgPPTyFollowAST c then a >-< b else a >#< b ppExts :: CfgPPTy -> HsName -> PP_Doc -> [PP_Doc] -> (PP_Doc,PP_Doc) ppExts cfg appFunNm appFunPP appArgPPL = (ppNice,ppCfg) where ppNice = ppAppTop (hsnRow,mkPPAppFun' sep appFunNm appFunPP) appArgPPL empty ppCfg = if cfgPPTyFollowAST cfg then let (e:es) = appArgPPL in hv ([hsnORow >#< appFunPP,sep >#< e] ++ map ("," >#<) es ++ [pp hsnCRow]) else ppNice sep = cfgPPTyLhsSafe cfg "|" type TVarNameMap = Map.Map TyVarId PP_Doc tnLookupPP :: TyVarId -> TVarNameMap -> Maybe PP_Doc tnLookupPP = Map.lookup tnMapInsert = Map.insert tnUniqRepr :: Int -> String tnUniqRepr = lrepr where lrepr i = if i <= 26 then [repr i] else let (d,r) = i `divMod` 26 in (repr d : lrepr r) repr = (chr . (97+)) ppTnUniq :: CfgPPTy -> Int -> PP_Doc ppTnUniq c = cfgPPTyPPHsn c . mkHNm . tnUniqRepr mkDefaultTvNmPP :: CfgPPTy -> String -> TyVarId -> PP_Doc mkDefaultTvNmPP cfg pre tv = cfgPPTyPPHsn cfg $ mkHNm $ pre ++ "_" ++ show tv tvCategPrefix :: TyVarCateg -> String tvCategPrefix TyVarCateg_Fixed = "c" tvCategPrefix TyVarCateg_Plain = "v" tvCategPrefix TyVarCateg_Meta = "m" -- Impls ------------------------------------------------------- {- visit 0: inherited attributes: cfg : CfgPPTy isAtTop : Bool isRow : Bool tyCtxt : TyQuCtxt chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: isEmptyImpls : Bool pp : PP_Doc self : Impls alternatives: alternative Tail: child iv : {ImplsVarId} child proveOccs : {[ImplsProveOcc]} visit 0: local ppIv : _ local self : _ alternative Cons: child iv : {ImplsVarId} child pr : Pred child pv : {PredOccId} child prange : {Range} child proveOccs : {[ImplsProveOcc]} child tl : Impls visit 0: local ppPv : _ local ppIv : _ local self : _ alternative Nil: visit 0: local self : _ -} -- cata sem_Impls :: Impls -> T_Impls sem_Impls (Impls_Tail _iv _proveOccs) = (sem_Impls_Tail _iv _proveOccs) sem_Impls (Impls_Cons _iv _pr _pv _prange _proveOccs _tl) = (sem_Impls_Cons _iv (sem_Pred _pr) _pv _prange _proveOccs (sem_Impls _tl)) sem_Impls (Impls_Nil) = (sem_Impls_Nil) -- semantic domain type T_Impls = CfgPPTy -> Bool -> Bool -> TVarNameMap -> Int -> TyQuCtxt -> ( Bool,PP_Doc,Impls,TVarNameMap,Int) sem_Impls_Tail :: ImplsVarId -> ([ImplsProveOcc]) -> T_Impls sem_Impls_Tail iv_ proveOccs_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (False) of { _lhsOisEmptyImpls -> (case (cfgPPTyPPImplsTailCons _lhsIcfg (cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg "i" iv_ (tnLookupPP iv_ _lhsItnMap)) (ppBracketsCommas proveOccs_)) of { _ppIv -> (case (_ppIv) of { _lhsOpp -> (case (Impls_Tail iv_ proveOccs_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOisEmptyImpls,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) })) sem_Impls_Cons :: ImplsVarId -> T_Pred -> PredOccId -> Range -> ([ImplsProveOcc]) -> T_Impls -> T_Impls sem_Impls_Cons iv_ pr_ pv_ prange_ proveOccs_ tl_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (False) of { _lhsOisEmptyImpls -> (case (_lhsItnUniq) of { _prOtnUniq -> (case (_lhsItyCtxt) of { _prOtyCtxt -> (case (_lhsItnMap) of { _prOtnMap -> (case (_lhsIisRow) of { _prOisRow -> (case (_lhsIisAtTop) of { _prOisAtTop -> (case (_lhsIcfg) of { _prOcfg -> (case (pr_ _prOcfg _prOisAtTop _prOisRow _prOtnMap _prOtnUniq _prOtyCtxt) of { ( _prIpp,_prIself,_prItnMap,_prItnUniq) -> (case (_prItnUniq) of { _tlOtnUniq -> (case (_prItnMap) of { _tlOtnMap -> (case (_lhsIcfg) of { _tlOcfg -> (case (cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg "p" (poiId pv_) (tnLookupPP iv_ _lhsItnMap)) of { _ppPv -> (case (cfgPPTyPPImplsTailCons _lhsIcfg (cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg "i" iv_ (tnLookupPP iv_ _lhsItnMap)) (ppBracketsCommas proveOccs_)) of { _ppIv -> (case (_lhsItyCtxt) of { _tlOtyCtxt -> (case (_lhsIisRow) of { _tlOisRow -> (case (_lhsIisAtTop) of { _tlOisAtTop -> (case (tl_ _tlOcfg _tlOisAtTop _tlOisRow _tlOtnMap _tlOtnUniq _tlOtyCtxt) of { ( _tlIisEmptyImpls,_tlIpp,_tlIself,_tlItnMap,_tlItnUniq) -> (case (cfgPPTyPPImplsPred _lhsIcfg _ppIv _prIpp _ppPv >|< "," >|< _tlIpp) of { _lhsOpp -> (case (Impls_Cons iv_ _prIself pv_ prange_ proveOccs_ _tlIself) of { _self -> (case (_self) of { _lhsOself -> (case (_tlItnMap) of { _lhsOtnMap -> (case (_tlItnUniq) of { _lhsOtnUniq -> ( _lhsOisEmptyImpls,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Impls_Nil :: T_Impls sem_Impls_Nil = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (cfgPPTyElimEmptyImpls _lhsIcfg) of { _lhsOisEmptyImpls -> (case (pp "_") of { _lhsOpp -> (case (Impls_Nil) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOisEmptyImpls,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) })) -- Label ------------------------------------------------------- {- visit 0: inherited attribute: cfg : CfgPPTy chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: pp : PP_Doc self : Label alternatives: alternative Lab: child nm : {HsName} visit 0: local self : _ alternative Var: child lv : {LabelVarId} visit 0: local self : _ -} -- cata sem_Label :: Label -> T_Label sem_Label (Label_Lab _nm) = (sem_Label_Lab _nm) sem_Label (Label_Var _lv) = (sem_Label_Var _lv) -- semantic domain type T_Label = CfgPPTy -> TVarNameMap -> Int -> ( PP_Doc,Label,TVarNameMap,Int) sem_Label_Lab :: HsName -> T_Label sem_Label_Lab nm_ = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (cfgPPTyPPHsn _lhsIcfg nm_) of { _lhsOpp -> (case (Label_Lab nm_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) sem_Label_Var :: LabelVarId -> T_Label sem_Label_Var lv_ = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg "l" lv_ (tnLookupPP lv_ _lhsItnMap)) of { _lhsOpp -> (case (Label_Var lv_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) -- LabelAGItf -------------------------------------------------- {- visit 0: synthesized attribute: pp : PP_Doc alternatives: alternative AGItf: child lab : Label visit 0: local tnMap : _ local cfg : _ local tnUniq : _ -} -- cata sem_LabelAGItf :: LabelAGItf -> T_LabelAGItf sem_LabelAGItf (LabelAGItf_AGItf _lab) = (sem_LabelAGItf_AGItf (sem_Label _lab)) -- semantic domain type T_LabelAGItf = ( PP_Doc) data Inh_LabelAGItf = Inh_LabelAGItf {} data Syn_LabelAGItf = Syn_LabelAGItf {pp_Syn_LabelAGItf :: !(PP_Doc)} wrap_LabelAGItf :: T_LabelAGItf -> Inh_LabelAGItf -> Syn_LabelAGItf wrap_LabelAGItf sem (Inh_LabelAGItf) = (let ( _lhsOpp) = sem in (Syn_LabelAGItf _lhsOpp)) sem_LabelAGItf_AGItf :: T_Label -> T_LabelAGItf sem_LabelAGItf_AGItf lab_ = (case (Map.empty) of { _tnMap -> (case (_tnMap) of { _labOtnMap -> (case (cfgPPTyDflt) of { _cfg -> (case (_cfg) of { _labOcfg -> (case (0) of { _tnUniq -> (case (_tnUniq) of { _labOtnUniq -> (case (lab_ _labOcfg _labOtnMap _labOtnUniq) of { ( _labIpp,_labIself,_labItnMap,_labItnUniq) -> (case (_labIpp) of { _lhsOpp -> ( _lhsOpp) }) }) }) }) }) }) }) }) -- Pred -------------------------------------------------------- {- visit 0: inherited attributes: cfg : CfgPPTy isAtTop : Bool isRow : Bool tyCtxt : TyQuCtxt chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: pp : PP_Doc self : Pred alternatives: alternative Class: child ty : Ty visit 0: local positionalFldNmL : _ local parNeedL : _ local parNeed : _ local cfg : _ local appSpinePos : _ local self : _ alternative Pred: child ty : Ty visit 0: local positionalFldNmL : _ local parNeedL : _ local parNeed : _ local cfg : _ local appSpinePos : _ local self : _ alternative Lacks: child ty : Ty child lab : Label visit 0: local cfg : _ local positionalFldNmL : _ local parNeedL : _ local parNeed : _ local appSpinePos : _ local self : _ alternative Arrow: child args : PredSeq child res : Pred visit 0: local cfg : _ local appSpinePos : _ local self : _ alternative Eq: child tyL : Ty child tyR : Ty visit 0: local positionalFldNmL : _ local parNeedL : _ local parNeed : _ local cfg : _ local appSpinePos : _ local self : _ alternative Var: child pv : {TyVarId} visit 0: local self : _ alternative Preds: child seq : PredSeq visit 0: local cfg : _ local appSpinePos : _ local self : _ -} -- cata sem_Pred :: Pred -> T_Pred sem_Pred (Pred_Class _ty) = (sem_Pred_Class (sem_Ty _ty)) sem_Pred (Pred_Pred _ty) = (sem_Pred_Pred (sem_Ty _ty)) sem_Pred (Pred_Lacks _ty _lab) = (sem_Pred_Lacks (sem_Ty _ty) (sem_Label _lab)) sem_Pred (Pred_Arrow _args _res) = (sem_Pred_Arrow (sem_PredSeq _args) (sem_Pred _res)) sem_Pred (Pred_Eq _tyL _tyR) = (sem_Pred_Eq (sem_Ty _tyL) (sem_Ty _tyR)) sem_Pred (Pred_Var _pv) = (sem_Pred_Var _pv) sem_Pred (Pred_Preds _seq) = (sem_Pred_Preds (sem_PredSeq _seq)) -- semantic domain type T_Pred = CfgPPTy -> Bool -> Bool -> TVarNameMap -> Int -> TyQuCtxt -> ( PP_Doc,Pred,TVarNameMap,Int) sem_Pred_Class :: T_Ty -> T_Pred sem_Pred_Class ty_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _tyOtnUniq -> (case (_lhsItnMap) of { _tyOtnMap -> (case (positionalFldNames) of { _positionalFldNmL -> (case (_positionalFldNmL) of { _tyOpositionalFldNmL -> (case ([]) of { _parNeedL -> (case (_parNeedL) of { _tyOparNeedL -> (case (ParNotNeeded) of { _parNeed -> (case (_parNeed) of { _tyOparNeed -> (case (_lhsIcfg { cfgPPTyCtxt = TyCtxt_Ty }) of { _cfg -> (case (_cfg) of { _tyOcfg -> (case (0) of { _appSpinePos -> (case (_appSpinePos) of { _tyOappSpinePos -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (_lhsItyCtxt) of { _tyOtyCtxt -> (case (_lhsIisRow) of { _tyOisRow -> (case (_lhsIisAtTop) of { _tyOisAtTop -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_tyIpp) of { _lhsOpp -> (case (Pred_Class _tyIself) of { _self -> (case (_self) of { _lhsOself -> (case (_tyItnMap) of { _lhsOtnMap -> (case (_tyItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Pred_Pred :: T_Ty -> T_Pred sem_Pred_Pred ty_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _tyOtnUniq -> (case (_lhsItnMap) of { _tyOtnMap -> (case (positionalFldNames) of { _positionalFldNmL -> (case (_positionalFldNmL) of { _tyOpositionalFldNmL -> (case ([]) of { _parNeedL -> (case (_parNeedL) of { _tyOparNeedL -> (case (ParNeeded) of { _parNeed -> (case (_parNeed) of { _tyOparNeed -> (case (_lhsIcfg { cfgPPTyCtxt = TyCtxt_Pred }) of { _cfg -> (case (_cfg) of { _tyOcfg -> (case (0) of { _appSpinePos -> (case (_appSpinePos) of { _tyOappSpinePos -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (_lhsItyCtxt) of { _tyOtyCtxt -> (case (_lhsIisRow) of { _tyOisRow -> (case (_lhsIisAtTop) of { _tyOisAtTop -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_tyIpp) of { _lhsOpp -> (case (Pred_Pred _tyIself) of { _self -> (case (_self) of { _lhsOself -> (case (_tyItnMap) of { _lhsOtnMap -> (case (_tyItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Pred_Lacks :: T_Ty -> T_Label -> T_Pred sem_Pred_Lacks ty_ lab_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _tyOtnUniq -> (case (_lhsItnMap) of { _tyOtnMap -> (case (_lhsIcfg { cfgPPTyCtxt = TyCtxt_Ty }) of { _cfg -> (case (_cfg) of { _tyOcfg -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (_lhsItyCtxt) of { _tyOtyCtxt -> (case (positionalFldNames) of { _positionalFldNmL -> (case (_positionalFldNmL) of { _tyOpositionalFldNmL -> (case ([]) of { _parNeedL -> (case (_parNeedL) of { _tyOparNeedL -> (case (ParNotNeeded) of { _parNeed -> (case (_parNeed) of { _tyOparNeed -> (case (_lhsIisRow) of { _tyOisRow -> (case (_lhsIisAtTop) of { _tyOisAtTop -> (case (0) of { _appSpinePos -> (case (_appSpinePos) of { _tyOappSpinePos -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_tyItnMap) of { _labOtnMap -> (case (_cfg) of { _labOcfg -> (case (_tyItnUniq) of { _labOtnUniq -> (case (lab_ _labOcfg _labOtnMap _labOtnUniq) of { ( _labIpp,_labIself,_labItnMap,_labItnUniq) -> (case (_tyIpp >|< "\\" >|< _labIpp) of { _lhsOpp -> (case (Pred_Lacks _tyIself _labIself) of { _self -> (case (_self) of { _lhsOself -> (case (_labItnMap) of { _lhsOtnMap -> (case (_labItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Pred_Arrow :: T_PredSeq -> T_Pred -> T_Pred sem_Pred_Arrow args_ res_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _argsOtnUniq -> (case (_lhsItyCtxt) of { _argsOtyCtxt -> (case (_lhsItnMap) of { _argsOtnMap -> (case (_lhsIisRow) of { _argsOisRow -> (case (_lhsIisAtTop) of { _argsOisAtTop -> (case (_lhsIcfg { cfgPPTyCtxt = TyCtxt_Ty }) of { _cfg -> (case (_cfg) of { _argsOcfg -> (case (0) of { _appSpinePos -> (case (_appSpinePos) of { _argsOappSpinePos -> (case (args_ _argsOappSpinePos _argsOcfg _argsOisAtTop _argsOisRow _argsOtnMap _argsOtnUniq _argsOtyCtxt) of { ( _argsIpp,_argsIppL,_argsIself,_argsItnMap,_argsItnUniq) -> (case (_argsItnUniq) of { _resOtnUniq -> (case (_argsItnMap) of { _resOtnMap -> (case (_cfg) of { _resOcfg -> (case (_lhsItyCtxt) of { _resOtyCtxt -> (case (_lhsIisRow) of { _resOisRow -> (case (_lhsIisAtTop) of { _resOisAtTop -> (case (res_ _resOcfg _resOisAtTop _resOisRow _resOtnMap _resOtnUniq _resOtyCtxt) of { ( _resIpp,_resIself,_resItnMap,_resItnUniq) -> (case (ppParensCommas _argsIppL >#< "=>" >#< _resIpp) of { _lhsOpp -> (case (Pred_Arrow _argsIself _resIself) of { _self -> (case (_self) of { _lhsOself -> (case (_resItnMap) of { _lhsOtnMap -> (case (_resItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Pred_Eq :: T_Ty -> T_Ty -> T_Pred sem_Pred_Eq tyL_ tyR_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _tyLOtnUniq -> (case (tyL_) of { ( _tyLIappFunNm,tyL_1) -> (case (_lhsItyCtxt) of { _tyLOtyCtxt -> (case (_lhsItnMap) of { _tyLOtnMap -> (case (positionalFldNames) of { _positionalFldNmL -> (case (_positionalFldNmL) of { _tyLOpositionalFldNmL -> (case ([]) of { _parNeedL -> (case (_parNeedL) of { _tyLOparNeedL -> (case (ParNotNeeded) of { _parNeed -> (case (_parNeed) of { _tyLOparNeed -> (case (_lhsIisRow) of { _tyLOisRow -> (case (_lhsIisAtTop) of { _tyLOisAtTop -> (case (_lhsIcfg { cfgPPTyCtxt = TyCtxt_Ty }) of { _cfg -> (case (_cfg) of { _tyLOcfg -> (case (0) of { _appSpinePos -> (case (_appSpinePos) of { _tyLOappSpinePos -> (case (tyL_1 _tyLOappSpinePos _tyLOcfg _tyLOisAtTop _tyLOisRow _tyLOparNeed _tyLOparNeedL _tyLOpositionalFldNmL _tyLOtnMap _tyLOtnUniq _tyLOtyCtxt) of { ( _tyLIappArgIsEmptyImplsL,_tyLIappArgPPL,_tyLIappFunPP,_tyLIisArrow,_tyLIisEmptyImpls,_tyLIisPred,_tyLIpositionalFldNmL,_tyLIpp,_tyLIself,_tyLItnMap,_tyLItnUniq) -> (case (_tyLItnUniq) of { _tyROtnUniq -> (case (_tyLItnMap) of { _tyROtnMap -> (case (_positionalFldNmL) of { _tyROpositionalFldNmL -> (case (_parNeedL) of { _tyROparNeedL -> (case (_parNeed) of { _tyROparNeed -> (case (_cfg) of { _tyROcfg -> (case (_appSpinePos) of { _tyROappSpinePos -> (case (tyR_) of { ( _tyRIappFunNm,tyR_1) -> (case (_lhsItyCtxt) of { _tyROtyCtxt -> (case (_lhsIisRow) of { _tyROisRow -> (case (_lhsIisAtTop) of { _tyROisAtTop -> (case (tyR_1 _tyROappSpinePos _tyROcfg _tyROisAtTop _tyROisRow _tyROparNeed _tyROparNeedL _tyROpositionalFldNmL _tyROtnMap _tyROtnUniq _tyROtyCtxt) of { ( _tyRIappArgIsEmptyImplsL,_tyRIappArgPPL,_tyRIappFunPP,_tyRIisArrow,_tyRIisEmptyImpls,_tyRIisPred,_tyRIpositionalFldNmL,_tyRIpp,_tyRIself,_tyRItnMap,_tyRItnUniq) -> (case (_tyLIpp >#< hsnEqTilde >#< _tyRIpp) of { _lhsOpp -> (case (Pred_Eq _tyLIself _tyRIself) of { _self -> (case (_self) of { _lhsOself -> (case (_tyRItnMap) of { _lhsOtnMap -> (case (_tyRItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_Pred_Var :: TyVarId -> T_Pred sem_Pred_Var pv_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg "p" pv_ (tnLookupPP pv_ _lhsItnMap)) of { _lhsOpp -> (case (Pred_Var pv_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) sem_Pred_Preds :: T_PredSeq -> T_Pred sem_Pred_Preds seq_ = (\ _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _seqOtnUniq -> (case (_lhsItnMap) of { _seqOtnMap -> (case (_lhsIcfg { cfgPPTyCtxt = TyCtxt_Ty }) of { _cfg -> (case (_cfg) of { _seqOcfg -> (case (_lhsItyCtxt) of { _seqOtyCtxt -> (case (_lhsIisRow) of { _seqOisRow -> (case (_lhsIisAtTop) of { _seqOisAtTop -> (case (0) of { _appSpinePos -> (case (_appSpinePos) of { _seqOappSpinePos -> (case (seq_ _seqOappSpinePos _seqOcfg _seqOisAtTop _seqOisRow _seqOtnMap _seqOtnUniq _seqOtyCtxt) of { ( _seqIpp,_seqIppL,_seqIself,_seqItnMap,_seqItnUniq) -> (case (ppParensCommas _seqIppL) of { _lhsOpp -> (case (Pred_Preds _seqIself) of { _self -> (case (_self) of { _lhsOself -> (case (_seqItnMap) of { _lhsOtnMap -> (case (_seqItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) -- PredSeq ----------------------------------------------------- {- visit 0: inherited attributes: appSpinePos : Int cfg : CfgPPTy isAtTop : Bool isRow : Bool tyCtxt : TyQuCtxt chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: pp : PP_Doc ppL : [PP_Doc] self : PredSeq alternatives: alternative Cons: child hd : Pred child tl : PredSeq visit 0: local self : _ alternative Nil: visit 0: local self : _ alternative Var: child av : {TyVarId} visit 0: local self : _ -} -- cata sem_PredSeq :: PredSeq -> T_PredSeq sem_PredSeq (PredSeq_Cons _hd _tl) = (sem_PredSeq_Cons (sem_Pred _hd) (sem_PredSeq _tl)) sem_PredSeq (PredSeq_Nil) = (sem_PredSeq_Nil) sem_PredSeq (PredSeq_Var _av) = (sem_PredSeq_Var _av) -- semantic domain type T_PredSeq = Int -> CfgPPTy -> Bool -> Bool -> TVarNameMap -> Int -> TyQuCtxt -> ( PP_Doc,([PP_Doc]),PredSeq,TVarNameMap,Int) sem_PredSeq_Cons :: T_Pred -> T_PredSeq -> T_PredSeq sem_PredSeq_Cons hd_ tl_ = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsItnUniq) of { _hdOtnUniq -> (case (_lhsItyCtxt) of { _hdOtyCtxt -> (case (_lhsItnMap) of { _hdOtnMap -> (case (_lhsIisRow) of { _hdOisRow -> (case (_lhsIisAtTop) of { _hdOisAtTop -> (case (_lhsIcfg) of { _hdOcfg -> (case (hd_ _hdOcfg _hdOisAtTop _hdOisRow _hdOtnMap _hdOtnUniq _hdOtyCtxt) of { ( _hdIpp,_hdIself,_hdItnMap,_hdItnUniq) -> (case (_hdItnUniq) of { _tlOtnUniq -> (case (_hdItnMap) of { _tlOtnMap -> (case (_lhsIcfg) of { _tlOcfg -> (case (_lhsItyCtxt) of { _tlOtyCtxt -> (case (_lhsIisRow) of { _tlOisRow -> (case (_lhsIisAtTop) of { _tlOisAtTop -> (case (_lhsIappSpinePos + 1) of { _tlOappSpinePos -> (case (tl_ _tlOappSpinePos _tlOcfg _tlOisAtTop _tlOisRow _tlOtnMap _tlOtnUniq _tlOtyCtxt) of { ( _tlIpp,_tlIppL,_tlIself,_tlItnMap,_tlItnUniq) -> (case (_hdIpp >#< _tlIpp) of { _lhsOpp -> (case (_hdIpp : _tlIppL) of { _lhsOppL -> (case (PredSeq_Cons _hdIself _tlIself) of { _self -> (case (_self) of { _lhsOself -> (case (_tlItnMap) of { _lhsOtnMap -> (case (_tlItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOppL,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) sem_PredSeq_Nil :: T_PredSeq sem_PredSeq_Nil = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (empty) of { _lhsOpp -> (case ([]) of { _lhsOppL -> (case (PredSeq_Nil) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOppL,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) })) sem_PredSeq_Var :: TyVarId -> T_PredSeq sem_PredSeq_Var av_ = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (empty) of { _lhsOpp -> (case ([cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg "prsq" av_ (tnLookupPP av_ _lhsItnMap)]) of { _lhsOppL -> (case (PredSeq_Var av_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOppL,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) })) -- Ty ---------------------------------------------------------- {- visit 0: synthesized attribute: appFunNm : HsName visit 1: inherited attributes: appSpinePos : Int cfg : CfgPPTy isAtTop : Bool isRow : Bool parNeed : ParNeed parNeedL : ParNeedL tyCtxt : TyQuCtxt chained attributes: positionalFldNmL : [HsName] tnMap : TVarNameMap tnUniq : Int synthesized attributes: appArgIsEmptyImplsL : [Bool] appArgPPL : [PP_Doc] appFunPP : PP_Doc isArrow : Bool isEmptyImpls : Bool isPred : Bool pp : PP_Doc self : Ty alternatives: alternative Con: child nm : {HsName} visit 1: local pp : _ local self : _ alternative App: child func : Ty child arg : Ty visit 0: local appFunNm : {HsName} visit 1: local appIsRec : {Bool} local appIsLikeProd : {Bool} local appIsArrow : {Bool} local tyCtxt : _ local isSpineRoot : {Bool} local _tup3 : _ local parNeed : _ local isAtTop : _ local argsParNeedL : _ local _tup4 : _ local appIsSum : _ local appIsRecOrSum : _ local argIsRow : {Bool} local appArgIsEmptyImplsL : _ local recSep : _ local _tup2 : _ local appArgPPL : _ local appFunPP : _ local isArrowRoot : {Bool} local isArrowArg : {Bool} local ppDflt : _ local ppAppTop : _ local ppAST : _ local ppNice : _ local pp : _ local self : _ intra appFunNm : {HsName} alternative Ann: child ann : TyAnn child ty : Ty visit 1: local tyCtxt : _ local isRow : _ local isAtTop : _ local pp : _ local self : _ alternative Dbg: child info : {String} visit 1: local pp : _ local self : _ alternative Any: visit 1: local pp : _ local self : _ alternative Var: child tv : {TyVarId} child categ : TyVarCateg visit 1: local pp : _ local self : _ alternative TBind: child qu : TyQu child tv : {TyVarId} child l1 : {Ty} child ty : Ty visit 1: inst l1' : Ty local tnPP : _ local tnMap : _ local tyCtxt : _ local tnUniq : _ local parNeed : _ local isRow : _ local isAtTop : _ local ppL1 : _ local ppTvPost : _ local ppQu : _ local ppTvPre : _ local ppTv : _ local pp : _ local self : _ alternative Ext: child ty : Ty child nm : {HsName} child extTy : Ty visit 0: local appFunNm : {HsName} visit 1: local tyCtxt : _ local isRow : _ local isAtTop : _ local _tup6 : _ local positionalNm : _ local fldPP : _ local appArgPPL : _ local appFunPP : _ local _tup5 : _ local ppCfg : _ local ppNice : _ local isSpineRoot : _ local pp : _ local self : _ intra appFunNm : {HsName} alternative Pred: child pr : Pred visit 1: local wrapPP : _ local tyCtxt : _ local isRow : _ local isAtTop : _ local pp : _ local self : _ alternative Lam: child tv : {TyVarId} child ty : Ty visit 1: local tnUniq : _ local tnPP : _ local tnMap : _ local parNeed : _ local tyCtxt : _ local isRow : _ local isAtTop : _ local pp : _ local self : _ alternative Impls: child impls : Impls visit 1: local wrapPP : _ local tyCtxt : _ local isRow : _ local isAtTop : _ local pp : _ local self : _ -} -- cata sem_Ty :: Ty -> T_Ty sem_Ty (Ty_Con _nm) = (sem_Ty_Con _nm) sem_Ty (Ty_App _func _arg) = (sem_Ty_App (sem_Ty _func) (sem_Ty _arg)) sem_Ty (Ty_Ann _ann _ty) = (sem_Ty_Ann (sem_TyAnn _ann) (sem_Ty _ty)) sem_Ty (Ty_Dbg _info) = (sem_Ty_Dbg _info) sem_Ty (Ty_Any) = (sem_Ty_Any) sem_Ty (Ty_Var _tv _categ) = (sem_Ty_Var _tv (sem_TyVarCateg _categ)) sem_Ty (Ty_TBind _qu _tv _l1 _ty) = (sem_Ty_TBind (sem_TyQu _qu) _tv _l1 (sem_Ty _ty)) sem_Ty (Ty_Ext _ty _nm _extTy) = (sem_Ty_Ext (sem_Ty _ty) _nm (sem_Ty _extTy)) sem_Ty (Ty_Pred _pr) = (sem_Ty_Pred (sem_Pred _pr)) sem_Ty (Ty_Lam _tv _ty) = (sem_Ty_Lam _tv (sem_Ty _ty)) sem_Ty (Ty_Impls _impls) = (sem_Ty_Impls (sem_Impls _impls)) -- semantic domain type T_Ty = ( HsName,T_Ty_1) type T_Ty_1 = Int -> CfgPPTy -> Bool -> Bool -> ParNeed -> ParNeedL -> ([HsName]) -> TVarNameMap -> Int -> TyQuCtxt -> ( ([Bool]),([PP_Doc]),PP_Doc,Bool,Bool,Bool,([HsName]),PP_Doc,Ty,TVarNameMap,Int) sem_Ty_Con :: HsName -> T_Ty sem_Ty_Con nm_ = (case (nm_) of { _lhsOappFunNm -> (case ((let sem_Ty_Con_1 :: T_Ty_1 sem_Ty_Con_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (if cfgPPTyCtxt _lhsIcfg == TyCtxt_Pred && hsnIsArrow nm_ then cfgPPTyPPCon _lhsIcfg _lhsIcfg hsnPrArrow else cfgPPTyPPCon _lhsIcfg _lhsIcfg nm_) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Con nm_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Con_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_App :: T_Ty -> T_Ty -> T_Ty sem_Ty_App func_ arg_ = (case (func_) of { ( _funcIappFunNm,func_1) -> (case (_funcIappFunNm) of { _appFunNm -> (case (_appFunNm) of { _lhsOappFunNm -> (case ((let sem_Ty_App_1 :: T_Ty_1 sem_Ty_App_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case (_lhsIcfg) of { _argOcfg -> (case (_lhsIcfg) of { _funcOcfg -> (case (arg_) of { ( _argIappFunNm,arg_1) -> (case (hsnIsRec _funcIappFunNm) of { _appIsRec -> (case (hsnIsProd _funcIappFunNm || _appIsRec) of { _appIsLikeProd -> (case (hsnIsArrow _funcIappFunNm) of { _appIsArrow -> (case (if _appIsArrow then TyQuCtxtArrow else if _appIsLikeProd then TyQuCtxtProd else TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _argOtyCtxt -> (case (_lhsItnUniq) of { _funcOtnUniq -> (case (_tyCtxt) of { _funcOtyCtxt -> (case (_lhsItnMap) of { _funcOtnMap -> (case (_lhsIpositionalFldNmL) of { _funcOpositionalFldNmL -> (case (_lhsIappSpinePos == 0) of { _isSpineRoot -> (case (if _isSpineRoot then parNeedApp _appFunNm else (ParNotNeeded,_lhsIparNeedL)) of { __tup3 -> (case (__tup3) of { (_parNeed,_) -> (case (_parNeed) of { _funcOparNeed -> (case (_lhsIisRow) of { _funcOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _funcOisAtTop -> (case (__tup3) of { (_,_argsParNeedL) -> (case (hdAndTl _argsParNeedL) of { __tup4 -> (case (__tup4) of { (_,_funcOparNeedL) -> (case (_lhsIappSpinePos + 1) of { _funcOappSpinePos -> (case (func_1 _funcOappSpinePos _funcOcfg _funcOisAtTop _funcOisRow _funcOparNeed _funcOparNeedL _funcOpositionalFldNmL _funcOtnMap _funcOtnUniq _funcOtyCtxt) of { ( _funcIappArgIsEmptyImplsL,_funcIappArgPPL,_funcIappFunPP,_funcIisArrow,_funcIisEmptyImpls,_funcIisPred,_funcIpositionalFldNmL,_funcIpp,_funcIself,_funcItnMap,_funcItnUniq) -> (case (_funcItnUniq) of { _argOtnUniq -> (case (_funcItnMap) of { _argOtnMap -> (case (_funcIpositionalFldNmL) of { _argOpositionalFldNmL -> (case (_lhsIparNeedL) of { _argOparNeedL -> (case (_isAtTop) of { _argOisAtTop -> (case (__tup4) of { (_argOparNeed,_) -> (case (0) of { _argOappSpinePos -> (case (hsnIsSum _funcIappFunNm) of { _appIsSum -> (case (_appIsRec || _appIsSum) of { _appIsRecOrSum -> (case (_isSpineRoot && _appIsRecOrSum) of { _argIsRow -> (case (_argIsRow) of { _argOisRow -> (case (arg_1 _argOappSpinePos _argOcfg _argOisAtTop _argOisRow _argOparNeed _argOparNeedL _argOpositionalFldNmL _argOtnMap _argOtnUniq _argOtyCtxt) of { ( _argIappArgIsEmptyImplsL,_argIappArgPPL,_argIappFunPP,_argIisArrow,_argIisEmptyImpls,_argIisPred,_argIpositionalFldNmL,_argIpp,_argIself,_argItnMap,_argItnUniq) -> (case (_funcIappArgIsEmptyImplsL ++ [_argIisEmptyImpls]) of { _appArgIsEmptyImplsL -> (case (_appArgIsEmptyImplsL) of { _lhsOappArgIsEmptyImplsL -> (case (cfgPPTyLhsSafe _lhsIcfg "|") of { _recSep -> (case (if cfgPPTyFollowAST _lhsIcfg then (_funcIappFunPP,_funcIappArgPPL ++ [_argIpp]) else mkExtAppPP' _recSep (_appFunNm,_funcIappFunPP,_funcIappArgPPL) (_argIappFunNm,_argIappFunPP,_argIappArgPPL,_argIpp)) of { __tup2 -> (case (__tup2) of { (_,_appArgPPL) -> (case (_appArgPPL) of { _lhsOappArgPPL -> (case (__tup2) of { (_appFunPP,_) -> (case (_appFunPP) of { _lhsOappFunPP -> (case (_appIsArrow && _isSpineRoot) of { _isArrowRoot -> (case (_isArrowRoot) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (_appIsArrow && _lhsIappSpinePos == 1) of { _isArrowArg -> (case (if _isArrowArg then _argIisPred else False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (if cfgPPTyFollowAST _lhsIcfg then ppParens _funcIpp >#< ppParens _argIpp else _funcIpp >#< _argIpp) of { _ppDflt -> (case (ppAppTop' (_appFunNm,_appFunPP) _appArgPPL _appArgIsEmptyImplsL _ppDflt) of { _ppAppTop -> (case (hv ([ppParens _appFunPP] ++ map ((" " >|<) . ppParens) _appArgPPL)) of { _ppAST -> (case (ppParNeed _parNeed _lhsIparNeed _ppAppTop) of { _ppNice -> (case (if _isSpineRoot then if cfgPPTyFollowAST _lhsIcfg then _ppAST else _ppNice else _ppDflt) of { _pp -> (case (_pp) of { _lhsOpp -> (case (Ty_App _funcIself _argIself) of { _self -> (case (_self) of { _lhsOself -> (case (_argItnMap) of { _lhsOtnMap -> (case (_argItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_App_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) }) }) sem_Ty_Ann :: T_TyAnn -> T_Ty -> T_Ty sem_Ty_Ann ann_ ty_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Ann_1 :: T_Ty_1 sem_Ty_Ann_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (_lhsItnUniq) of { _annOtnUniq -> (case (_lhsItnMap) of { _annOtnMap -> (case (_lhsIcfg) of { _annOcfg -> (case (ann_ _annOcfg _annOtnMap _annOtnUniq) of { ( _annIpp,_annIself,_annItnMap,_annItnUniq) -> (case (_annItnUniq) of { _tyOtnUniq -> (case (_annItnMap) of { _tyOtnMap -> (case (_lhsIpositionalFldNmL) of { _tyOpositionalFldNmL -> (case (_lhsIparNeedL) of { _tyOparNeedL -> (case (_lhsIparNeed) of { _tyOparNeed -> (case (_lhsIcfg) of { _tyOcfg -> (case (_lhsIappSpinePos) of { _tyOappSpinePos -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _tyOtyCtxt -> (case (False) of { _isRow -> (case (_isRow) of { _tyOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _tyOisAtTop -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_annIpp >#< _tyIpp) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Ann _annIself _tyIself) of { _self -> (case (_self) of { _lhsOself -> (case (_tyItnMap) of { _lhsOtnMap -> (case (_tyItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Ann_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_Dbg :: String -> T_Ty sem_Ty_Dbg info_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Dbg_1 :: T_Ty_1 sem_Ty_Dbg_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (ppParens $ "DBG<<<" >#< info_ >#< ">>>") of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Dbg info_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Dbg_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_Any :: T_Ty sem_Ty_Any = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Any_1 :: T_Ty_1 sem_Ty_Any_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (pp hsnUnknown) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Any) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Any_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_Var :: TyVarId -> T_TyVarCateg -> T_Ty sem_Ty_Var tv_ categ_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Var_1 :: T_Ty_1 sem_Ty_Var_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (_lhsItnUniq) of { _categOtnUniq -> (case (_lhsItnMap) of { _categOtnMap -> (case (_lhsIcfg) of { _categOcfg -> (case (categ_ _categOcfg _categOtnMap _categOtnUniq) of { ( _categIpp,_categIself,_categItnMap,_categItnUniq) -> (case (cfgPPTyPPVarDflt _lhsIcfg _lhsIcfg (tvCategPrefix _categIself) tv_ (tnLookupPP tv_ _lhsItnMap)) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Var tv_ _categIself) of { _self -> (case (_self) of { _lhsOself -> (case (_categItnMap) of { _lhsOtnMap -> (case (_categItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Var_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_TBind :: T_TyQu -> TyVarId -> Ty -> T_Ty -> T_Ty sem_Ty_TBind qu_ tv_ l1_ ty_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_TBind_1 :: T_Ty_1 sem_Ty_TBind_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (l1_) of { l1'_val_ -> (case ((sem_Ty l1'_val_)) of { l1'_inst_ -> (case (cfgPPTyPPVar _lhsIcfg _lhsIcfg tv_ _lhsItnUniq) of { _tnPP -> (case (tnMapInsert tv_ _tnPP _lhsItnMap) of { _tnMap -> (case (_tnMap) of { _l1'OtnMap -> (case (_lhsIpositionalFldNmL) of { _tyOpositionalFldNmL -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _tyOtyCtxt -> (case (_lhsItnUniq + 1) of { _tnUniq -> (case (_tnUniq) of { _tyOtnUniq -> (case (_tnMap) of { _tyOtnMap -> (case (_lhsIparNeedL) of { _tyOparNeedL -> (case (ParNotNeeded) of { _parNeed -> (case (_parNeed) of { _tyOparNeed -> (case (False) of { _isRow -> (case (_isRow) of { _tyOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _tyOisAtTop -> (case (_lhsIcfg) of { _tyOcfg -> (case (0) of { _tyOappSpinePos -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_tyIpositionalFldNmL) of { _l1'OpositionalFldNmL -> (case (_lhsIparNeedL) of { _l1'OparNeedL -> (case (_parNeed) of { _l1'OparNeed -> (case (_lhsIcfg) of { _l1'Ocfg -> (case (_lhsIappSpinePos) of { _l1'OappSpinePos -> (case (_tnUniq) of { _l1'OtnUniq -> (case (l1'_inst_) of { ( _l1'IappFunNm,l1'_1) -> (case (_tyCtxt) of { _l1'OtyCtxt -> (case (_isRow) of { _l1'OisRow -> (case (_isAtTop) of { _l1'OisAtTop -> (case (l1'_1 _l1'OappSpinePos _l1'Ocfg _l1'OisAtTop _l1'OisRow _l1'OparNeed _l1'OparNeedL _l1'OpositionalFldNmL _l1'OtnMap _l1'OtnUniq _l1'OtyCtxt) of { ( _l1'IappArgIsEmptyImplsL,_l1'IappArgPPL,_l1'IappFunPP,_l1'IisArrow,_l1'IisEmptyImpls,_l1'IisPred,_l1'IpositionalFldNmL,_l1'Ipp,_l1'Iself,_l1'ItnMap,_l1'ItnUniq) -> (case (_l1'Ipp) of { _ppL1 -> (case (if maybe False (== hsnKindStar) $ tyMbCon l1_ then empty else ppParens _ppL1) of { _ppTvPost -> (case (_tnUniq) of { _quOtnUniq -> (case (_tnMap) of { _quOtnMap -> (case (_lhsIcfg) of { _quOcfg -> (case (qu_ _quOcfg _quOtnMap _quOtnUniq) of { ( _quIpp,_quIself,_quItnMap,_quItnUniq) -> (case (_quIpp) of { _ppQu -> (case (empty) of { _ppTvPre -> (case (_tnPP) of { _ppTv -> (case (ppParNeed _parNeed _lhsIparNeed (cfgppAside _lhsIcfg (_ppQu >#< _ppTvPre >|< _ppTv >|< _ppTvPost) ("." >#< _tyIpp))) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_TBind _quIself tv_ l1_ _tyIself) of { _self -> (case (_self) of { _lhsOself -> (case (Map.filterWithKey (\v _ -> v /= tv_) _tyItnMap) of { _lhsOtnMap -> (case (_tnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_TBind_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_Ext :: T_Ty -> HsName -> T_Ty -> T_Ty sem_Ty_Ext ty_ nm_ extTy_ = (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (_tyIappFunNm) of { _appFunNm -> (case (_appFunNm) of { _lhsOappFunNm -> (case ((let sem_Ty_Ext_1 :: T_Ty_1 sem_Ty_Ext_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case (_lhsItnUniq) of { _tyOtnUniq -> (case (TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _tyOtyCtxt -> (case (_lhsItnMap) of { _tyOtnMap -> (case (_lhsIpositionalFldNmL) of { _tyOpositionalFldNmL -> (case (_lhsIparNeedL) of { _tyOparNeedL -> (case (False) of { _isRow -> (case (_isRow) of { _tyOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _tyOisAtTop -> (case (_lhsIcfg) of { _tyOcfg -> (case (ParNotNeeded) of { _tyOparNeed -> (case (_lhsIappSpinePos + 1) of { _tyOappSpinePos -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_tyItnUniq) of { _extTyOtnUniq -> (case (_tyItnMap) of { _extTyOtnMap -> (case (_lhsIparNeedL) of { _extTyOparNeedL -> (case (_lhsIcfg) of { _extTyOcfg -> (case (ParNotNeeded) of { _extTyOparNeed -> (case (positionalFldNames) of { _extTyOpositionalFldNmL -> (case (hdAndTl _tyIpositionalFldNmL) of { __tup6 -> (case (__tup6) of { (_positionalNm,_) -> (case (0) of { _extTyOappSpinePos -> (case (extTy_) of { ( _extTyIappFunNm,extTy_1) -> (case (_tyCtxt) of { _extTyOtyCtxt -> (case (_isRow) of { _extTyOisRow -> (case (_isAtTop) of { _extTyOisAtTop -> (case (extTy_1 _extTyOappSpinePos _extTyOcfg _extTyOisAtTop _extTyOisRow _extTyOparNeed _extTyOparNeedL _extTyOpositionalFldNmL _extTyOtnMap _extTyOtnUniq _extTyOtyCtxt) of { ( _extTyIappArgIsEmptyImplsL,_extTyIappArgPPL,_extTyIappFunPP,_extTyIisArrow,_extTyIisEmptyImpls,_extTyIisPred,_extTyIpositionalFldNmL,_extTyIpp,_extTyIself,_extTyItnMap,_extTyItnUniq) -> (case (let pn = if cfgPPTyFollowAST _lhsIcfg then Nothing else Just _positionalNm in ppFld "::" pn nm_ (cfgPPTyPPHsn _lhsIcfg nm_) _extTyIpp) of { _fldPP -> (case (_tyIappArgPPL ++ [_fldPP]) of { _appArgPPL -> (case (_appArgPPL) of { _lhsOappArgPPL -> (case (_tyIappFunPP) of { _appFunPP -> (case (_appFunPP) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (__tup6) of { (_,_lhsOpositionalFldNmL) -> (case (ppExts _lhsIcfg _appFunNm _appFunPP _appArgPPL) of { __tup5 -> (case (__tup5) of { (_,_ppCfg) -> (case (__tup5) of { (_ppNice,_) -> (case (_lhsIappSpinePos == 0) of { _isSpineRoot -> (case (if _isSpineRoot then _ppCfg else _ppNice) of { _pp -> (case (_pp) of { _lhsOpp -> (case (Ty_Ext _tyIself nm_ _extTyIself) of { _self -> (case (_self) of { _lhsOself -> (case (_extTyItnMap) of { _lhsOtnMap -> (case (_extTyItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Ext_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) }) }) sem_Ty_Pred :: T_Pred -> T_Ty sem_Ty_Pred pr_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Pred_1 :: T_Ty_1 sem_Ty_Pred_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (_lhsItnUniq) of { _prOtnUniq -> (case (_lhsItnMap) of { _prOtnMap -> (case (_lhsIcfg) of { _prOcfg -> (case (if cfgPPTyCtxt _lhsIcfg == TyCtxt_Pred then id else (\pp -> hsnOImpl >#< pp >#< hsnCImpl)) of { _wrapPP -> (case (TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _prOtyCtxt -> (case (False) of { _isRow -> (case (_isRow) of { _prOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _prOisAtTop -> (case (pr_ _prOcfg _prOisAtTop _prOisRow _prOtnMap _prOtnUniq _prOtyCtxt) of { ( _prIpp,_prIself,_prItnMap,_prItnUniq) -> (case (cfgPPTyPPImplsAppWrap _lhsIcfg _wrapPP _prIpp) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (True) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Pred _prIself) of { _self -> (case (_self) of { _lhsOself -> (case (_prItnMap) of { _lhsOtnMap -> (case (_prItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Pred_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_Lam :: TyVarId -> T_Ty -> T_Ty sem_Ty_Lam tv_ ty_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Lam_1 :: T_Ty_1 sem_Ty_Lam_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (_lhsItnUniq + 1) of { _tnUniq -> (case (_tnUniq) of { _tyOtnUniq -> (case (cfgPPTyPPVar _lhsIcfg _lhsIcfg tv_ _lhsItnUniq) of { _tnPP -> (case (tnMapInsert tv_ _tnPP _lhsItnMap) of { _tnMap -> (case (_tnMap) of { _tyOtnMap -> (case (_lhsIpositionalFldNmL) of { _tyOpositionalFldNmL -> (case (_lhsIparNeedL) of { _tyOparNeedL -> (case (ParNotNeeded) of { _parNeed -> (case (_parNeed) of { _tyOparNeed -> (case (_lhsIcfg) of { _tyOcfg -> (case (_lhsIappSpinePos) of { _tyOappSpinePos -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _tyOtyCtxt -> (case (False) of { _isRow -> (case (_isRow) of { _tyOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _tyOisAtTop -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (ppParNeed _parNeed _lhsIparNeed (cfgppAside _lhsIcfg ("\\" >|< _tnPP) ("->" >#< _tyIpp))) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (False) of { _lhsOisEmptyImpls -> (case (False) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Lam tv_ _tyIself) of { _self -> (case (_self) of { _lhsOself -> (case (Map.filterWithKey (\v _ -> v /= tv_) _tyItnMap) of { _lhsOtnMap -> (case (_tnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Lam_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) sem_Ty_Impls :: T_Impls -> T_Ty sem_Ty_Impls impls_ = (case (hsnUnknown) of { _lhsOappFunNm -> (case ((let sem_Ty_Impls_1 :: T_Ty_1 sem_Ty_Impls_1 = (\ _lhsIappSpinePos _lhsIcfg _lhsIisAtTop _lhsIisRow _lhsIparNeed _lhsIparNeedL _lhsIpositionalFldNmL _lhsItnMap _lhsItnUniq _lhsItyCtxt -> (case ([]) of { _lhsOappArgIsEmptyImplsL -> (case ([]) of { _lhsOappArgPPL -> (case (_lhsItnUniq) of { _implsOtnUniq -> (case (_lhsItnMap) of { _implsOtnMap -> (case (_lhsIcfg) of { _implsOcfg -> (case (if cfgPPTyCtxt _lhsIcfg == TyCtxt_Pred then id else (\pp -> hsnOImpl >#< pp >#< hsnCImpl)) of { _wrapPP -> (case (TyQuCtxtOther) of { _tyCtxt -> (case (_tyCtxt) of { _implsOtyCtxt -> (case (False) of { _isRow -> (case (_isRow) of { _implsOisRow -> (case (False) of { _isAtTop -> (case (_isAtTop) of { _implsOisAtTop -> (case (impls_ _implsOcfg _implsOisAtTop _implsOisRow _implsOtnMap _implsOtnUniq _implsOtyCtxt) of { ( _implsIisEmptyImpls,_implsIpp,_implsIself,_implsItnMap,_implsItnUniq) -> (case (cfgPPTyPPImplsAppWrap _lhsIcfg _wrapPP _implsIpp) of { _pp -> (case (_pp) of { _lhsOappFunPP -> (case (False) of { _lhsOisArrow -> (case (_implsIisEmptyImpls) of { _lhsOisEmptyImpls -> (case (True) of { _lhsOisPred -> (case (_lhsIpositionalFldNmL) of { _lhsOpositionalFldNmL -> (case (_pp) of { _lhsOpp -> (case (Ty_Impls _implsIself) of { _self -> (case (_self) of { _lhsOself -> (case (_implsItnMap) of { _lhsOtnMap -> (case (_implsItnUniq) of { _lhsOtnUniq -> ( _lhsOappArgIsEmptyImplsL,_lhsOappArgPPL,_lhsOappFunPP,_lhsOisArrow,_lhsOisEmptyImpls,_lhsOisPred,_lhsOpositionalFldNmL,_lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) }) })) in sem_Ty_Impls_1)) of { ( sem_Ty_1) -> ( _lhsOappFunNm,sem_Ty_1) }) }) -- TyAGItf ----------------------------------------------------- {- visit 0: inherited attribute: cfg : CfgPPTy synthesized attribute: pp : PP_Doc alternatives: alternative AGItf: child ty : Ty -} -- cata sem_TyAGItf :: TyAGItf -> T_TyAGItf sem_TyAGItf (TyAGItf_AGItf _ty) = (sem_TyAGItf_AGItf (sem_Ty _ty)) -- semantic domain type T_TyAGItf = CfgPPTy -> ( PP_Doc) data Inh_TyAGItf = Inh_TyAGItf {cfg_Inh_TyAGItf :: !(CfgPPTy)} data Syn_TyAGItf = Syn_TyAGItf {pp_Syn_TyAGItf :: !(PP_Doc)} wrap_TyAGItf :: T_TyAGItf -> Inh_TyAGItf -> Syn_TyAGItf wrap_TyAGItf sem (Inh_TyAGItf _lhsIcfg) = (let ( _lhsOpp) = sem _lhsIcfg in (Syn_TyAGItf _lhsOpp)) sem_TyAGItf_AGItf :: T_Ty -> T_TyAGItf sem_TyAGItf_AGItf ty_ = (\ _lhsIcfg -> (case (_lhsIcfg) of { _tyOcfg -> (case ([]) of { _tyOparNeedL -> (case (ParNotNeeded) of { _tyOparNeed -> (case (positionalFldNames) of { _tyOpositionalFldNmL -> (case (Map.empty) of { _tyOtnMap -> (case (0) of { _tyOtnUniq -> (case (0) of { _tyOappSpinePos -> (case (ty_) of { ( _tyIappFunNm,ty_1) -> (case (TyQuCtxtOnTop) of { _tyOtyCtxt -> (case (False) of { _tyOisRow -> (case (True) of { _tyOisAtTop -> (case (ty_1 _tyOappSpinePos _tyOcfg _tyOisAtTop _tyOisRow _tyOparNeed _tyOparNeedL _tyOpositionalFldNmL _tyOtnMap _tyOtnUniq _tyOtyCtxt) of { ( _tyIappArgIsEmptyImplsL,_tyIappArgPPL,_tyIappFunPP,_tyIisArrow,_tyIisEmptyImpls,_tyIisPred,_tyIpositionalFldNmL,_tyIpp,_tyIself,_tyItnMap,_tyItnUniq) -> (case (_tyIpp) of { _lhsOpp -> ( _lhsOpp) }) }) }) }) }) }) }) }) }) }) }) }) })) -- TyAnn ------------------------------------------------------- {- visit 0: inherited attribute: cfg : CfgPPTy chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: pp : PP_Doc self : TyAnn alternatives: alternative Empty: visit 0: local pp : _ local self : _ alternative Strictness: child s : {Strictness} visit 0: local pp : _ local self : _ alternative Mono: visit 0: local pp : _ local self : _ -} -- cata sem_TyAnn :: TyAnn -> T_TyAnn sem_TyAnn (TyAnn_Empty) = (sem_TyAnn_Empty) sem_TyAnn (TyAnn_Strictness _s) = (sem_TyAnn_Strictness _s) sem_TyAnn (TyAnn_Mono) = (sem_TyAnn_Mono) -- semantic domain type T_TyAnn = CfgPPTy -> TVarNameMap -> Int -> ( PP_Doc,TyAnn,TVarNameMap,Int) sem_TyAnn_Empty :: T_TyAnn sem_TyAnn_Empty = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (empty) of { _pp -> (case (_pp) of { _lhsOpp -> (case (TyAnn_Empty) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) })) sem_TyAnn_Strictness :: Strictness -> T_TyAnn sem_TyAnn_Strictness s_ = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case ("@" >|< show s_) of { _pp -> (case (_pp) of { _lhsOpp -> (case (TyAnn_Strictness s_) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) })) sem_TyAnn_Mono :: T_TyAnn sem_TyAnn_Mono = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (pp "MONO ") of { _pp -> (case (_pp) of { _lhsOpp -> (case (TyAnn_Mono) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }) })) -- TyQu -------------------------------------------------------- {- visit 0: inherited attribute: cfg : CfgPPTy chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: pp : PP_Doc self : TyQu alternatives: alternative Forall: child mlev : {MetaLev} visit 0: local self : _ alternative Exists: child mlev : {MetaLev} visit 0: local self : _ alternative Plain: child mlev : {MetaLev} visit 0: local self : _ -} -- cata sem_TyQu :: TyQu -> T_TyQu sem_TyQu (TyQu_Forall _mlev) = (sem_TyQu_Forall _mlev) sem_TyQu (TyQu_Exists _mlev) = (sem_TyQu_Exists _mlev) sem_TyQu (TyQu_Plain _mlev) = (sem_TyQu_Plain _mlev) -- semantic domain type T_TyQu = CfgPPTy -> TVarNameMap -> Int -> ( PP_Doc,TyQu,TVarNameMap,Int) sem_TyQu_Forall :: MetaLev -> T_TyQu sem_TyQu_Forall mlev_ = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (TyQu_Forall mlev_) of { _self -> (case (text (showTyQu _self)) of { _lhsOpp -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) sem_TyQu_Exists :: MetaLev -> T_TyQu sem_TyQu_Exists mlev_ = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (TyQu_Exists mlev_) of { _self -> (case (text (showTyQu _self)) of { _lhsOpp -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) sem_TyQu_Plain :: MetaLev -> T_TyQu sem_TyQu_Plain mlev_ = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (TyQu_Plain mlev_) of { _self -> (case (text (showTyQu _self)) of { _lhsOpp -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) -- TyVarCateg -------------------------------------------------- {- visit 0: inherited attribute: cfg : CfgPPTy chained attributes: tnMap : TVarNameMap tnUniq : Int synthesized attributes: pp : PP_Doc self : TyVarCateg alternatives: alternative Plain: visit 0: local self : _ alternative Fixed: visit 0: local self : _ alternative Meta: visit 0: local self : _ -} -- cata sem_TyVarCateg :: TyVarCateg -> T_TyVarCateg sem_TyVarCateg (TyVarCateg_Plain) = (sem_TyVarCateg_Plain) sem_TyVarCateg (TyVarCateg_Fixed) = (sem_TyVarCateg_Fixed) sem_TyVarCateg (TyVarCateg_Meta) = (sem_TyVarCateg_Meta) -- semantic domain type T_TyVarCateg = CfgPPTy -> TVarNameMap -> Int -> ( PP_Doc,TyVarCateg,TVarNameMap,Int) sem_TyVarCateg_Plain :: T_TyVarCateg sem_TyVarCateg_Plain = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (empty) of { _lhsOpp -> (case (TyVarCateg_Plain) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) sem_TyVarCateg_Fixed :: T_TyVarCateg sem_TyVarCateg_Fixed = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (empty) of { _lhsOpp -> (case (TyVarCateg_Fixed) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) })) sem_TyVarCateg_Meta :: T_TyVarCateg sem_TyVarCateg_Meta = (\ _lhsIcfg _lhsItnMap _lhsItnUniq -> (case (empty) of { _lhsOpp -> (case (TyVarCateg_Meta) of { _self -> (case (_self) of { _lhsOself -> (case (_lhsItnMap) of { _lhsOtnMap -> (case (_lhsItnUniq) of { _lhsOtnUniq -> ( _lhsOpp,_lhsOself,_lhsOtnMap,_lhsOtnUniq) }) }) }) }) }))