-- For GHC version 7.10 or higher {-# LANGUAGE GADTs, KindSignatures, DataKinds #-} {-# LANGUAGE LambdaCase #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} {-# OPTIONS_GHC -fno-warn-incomplete-patterns #-} {-# OPTIONS_GHC -fno-warn-overlapping-patterns #-} module AbsGF ( Tree(..) , Grammar , ModDef , ConcSpec , ConcExp , Transfer , ModType , ModBody , Extend , Opens , OpenDecl , ComplMod , QualOpen , Included , Def , TopDef , CatDef , FunDef , DataDef , DataConstr , ParDef , ParConstr , PrintDef , FlagDef , Name , LocDef , Exp , Exps , Patt , PattAss , Label , Sort , PattAlt , Bind , Decl , TupleComp , PattTupleComp , Case , Equation , Altern , DDecl , OldGrammar , IncludeDecl , FileName , Ident , LString , johnMajorEq , module ComposOpGF ) where import Prelude ((.), (>), (&&), (==)) import Prelude ((.), (>), (&&), (==)) import qualified Prelude as P import ComposOpGF data Tag = Grammar_ | ModDef_ | ConcSpec_ | ConcExp_ | Transfer_ | ModType_ | ModBody_ | Extend_ | Opens_ | OpenDecl_ | ComplMod_ | QualOpen_ | Included_ | Def_ | TopDef_ | CatDef_ | FunDef_ | DataDef_ | DataConstr_ | ParDef_ | ParConstr_ | PrintDef_ | FlagDef_ | Name_ | LocDef_ | Exp_ | Exps_ | Patt_ | PattAss_ | Label_ | Sort_ | PattAlt_ | Bind_ | Decl_ | TupleComp_ | PattTupleComp_ | Case_ | Equation_ | Altern_ | DDecl_ | OldGrammar_ | IncludeDecl_ | FileName_ | Ident_ | LString_ type Grammar = Tree 'Grammar_ type ModDef = Tree 'ModDef_ type ConcSpec = Tree 'ConcSpec_ type ConcExp = Tree 'ConcExp_ type Transfer = Tree 'Transfer_ type ModType = Tree 'ModType_ type ModBody = Tree 'ModBody_ type Extend = Tree 'Extend_ type Opens = Tree 'Opens_ type OpenDecl = Tree 'OpenDecl_ type ComplMod = Tree 'ComplMod_ type QualOpen = Tree 'QualOpen_ type Included = Tree 'Included_ type Def = Tree 'Def_ type TopDef = Tree 'TopDef_ type CatDef = Tree 'CatDef_ type FunDef = Tree 'FunDef_ type DataDef = Tree 'DataDef_ type DataConstr = Tree 'DataConstr_ type ParDef = Tree 'ParDef_ type ParConstr = Tree 'ParConstr_ type PrintDef = Tree 'PrintDef_ type FlagDef = Tree 'FlagDef_ type Name = Tree 'Name_ type LocDef = Tree 'LocDef_ type Exp = Tree 'Exp_ type Exps = Tree 'Exps_ type Patt = Tree 'Patt_ type PattAss = Tree 'PattAss_ type Label = Tree 'Label_ type Sort = Tree 'Sort_ type PattAlt = Tree 'PattAlt_ type Bind = Tree 'Bind_ type Decl = Tree 'Decl_ type TupleComp = Tree 'TupleComp_ type PattTupleComp = Tree 'PattTupleComp_ type Case = Tree 'Case_ type Equation = Tree 'Equation_ type Altern = Tree 'Altern_ type DDecl = Tree 'DDecl_ type OldGrammar = Tree 'OldGrammar_ type IncludeDecl = Tree 'IncludeDecl_ type FileName = Tree 'FileName_ type Ident = Tree 'Ident_ type LString = Tree 'LString_ data Tree (a :: Tag) where Gr :: [ModDef] -> Tree 'Grammar_ MMain :: Ident -> Ident -> [ConcSpec] -> Tree 'ModDef_ MModule :: ComplMod -> ModType -> ModBody -> Tree 'ModDef_ ConcSpecC :: Ident -> ConcExp -> Tree 'ConcSpec_ ConcExpC :: Ident -> [Transfer] -> Tree 'ConcExp_ TransferIn :: OpenDecl -> Tree 'Transfer_ TransferOut :: OpenDecl -> Tree 'Transfer_ MTAbstract :: Ident -> Tree 'ModType_ MTConcrete :: Ident -> Ident -> Tree 'ModType_ MTInstance :: Ident -> Ident -> Tree 'ModType_ MTInterface :: Ident -> Tree 'ModType_ MTResource :: Ident -> Tree 'ModType_ MTTransfer :: Ident -> OpenDecl -> OpenDecl -> Tree 'ModType_ MBody :: Extend -> Opens -> [TopDef] -> Tree 'ModBody_ MReuse :: Ident -> Tree 'ModBody_ MUnion :: [Included] -> Tree 'ModBody_ MWith :: Ident -> [OpenDecl] -> Tree 'ModBody_ MWithE :: [Included] -> Ident -> [OpenDecl] -> Tree 'ModBody_ Ext :: [Included] -> Tree 'Extend_ NoExt :: Tree 'Extend_ NoOpens :: Tree 'Opens_ OpenIn :: [OpenDecl] -> Tree 'Opens_ OName :: Ident -> Tree 'OpenDecl_ OQual :: QualOpen -> Ident -> Ident -> Tree 'OpenDecl_ OQualQO :: QualOpen -> Ident -> Tree 'OpenDecl_ CMCompl :: Tree 'ComplMod_ CMIncompl :: Tree 'ComplMod_ QOCompl :: Tree 'QualOpen_ QOIncompl :: Tree 'QualOpen_ QOInterface :: Tree 'QualOpen_ IAll :: Ident -> Tree 'Included_ IMinus :: Ident -> [Ident] -> Tree 'Included_ ISome :: Ident -> [Ident] -> Tree 'Included_ DDeclC :: [Name] -> Exp -> Tree 'Def_ DDef :: [Name] -> Exp -> Tree 'Def_ DFull :: [Name] -> Exp -> Exp -> Tree 'Def_ DPatt :: Name -> [Patt] -> Exp -> Tree 'Def_ DefCat :: [CatDef] -> Tree 'TopDef_ DefData :: [DataDef] -> Tree 'TopDef_ DefDef :: [Def] -> Tree 'TopDef_ DefFlag :: [FlagDef] -> Tree 'TopDef_ DefFun :: [FunDef] -> Tree 'TopDef_ DefFunData :: [FunDef] -> Tree 'TopDef_ DefLin :: [Def] -> Tree 'TopDef_ DefLincat :: [PrintDef] -> Tree 'TopDef_ DefLindef :: [Def] -> Tree 'TopDef_ DefLintype :: [Def] -> Tree 'TopDef_ DefOper :: [Def] -> Tree 'TopDef_ DefPackage :: Ident -> [TopDef] -> Tree 'TopDef_ DefPar :: [ParDef] -> Tree 'TopDef_ DefPattern :: [Def] -> Tree 'TopDef_ DefPrintCat :: [PrintDef] -> Tree 'TopDef_ DefPrintFun :: [PrintDef] -> Tree 'TopDef_ DefPrintOld :: [PrintDef] -> Tree 'TopDef_ DefTokenizer :: Ident -> Tree 'TopDef_ DefTrans :: [Def] -> Tree 'TopDef_ DefVars :: [Def] -> Tree 'TopDef_ ListCatDefC :: Ident -> [DDecl] -> Tree 'CatDef_ ListSizeCatDef :: Ident -> [DDecl] -> P.Integer -> Tree 'CatDef_ SimpleCatDef :: Ident -> [DDecl] -> Tree 'CatDef_ FunDefC :: [Ident] -> Exp -> Tree 'FunDef_ DataDefC :: Ident -> [DataConstr] -> Tree 'DataDef_ DataId :: Ident -> Tree 'DataConstr_ DataQId :: Ident -> Ident -> Tree 'DataConstr_ ParDefAbs :: Ident -> Tree 'ParDef_ ParDefDir :: Ident -> [ParConstr] -> Tree 'ParDef_ ParDefIndir :: Ident -> Ident -> Tree 'ParDef_ ParConstrC :: Ident -> [DDecl] -> Tree 'ParConstr_ PrintDefC :: [Name] -> Exp -> Tree 'PrintDef_ FlagDefC :: Ident -> Ident -> Tree 'FlagDef_ IdentName :: Ident -> Tree 'Name_ ListNameC :: Ident -> Tree 'Name_ LDDecl :: [Ident] -> Exp -> Tree 'LocDef_ LDDef :: [Ident] -> Exp -> Tree 'LocDef_ LDFull :: [Ident] -> Exp -> Exp -> Tree 'LocDef_ EAbstr :: [Bind] -> Exp -> Tree 'Exp_ EApp :: Exp -> Exp -> Tree 'Exp_ ECTable :: [Bind] -> Exp -> Tree 'Exp_ ECase :: Exp -> [Case] -> Tree 'Exp_ EConAt :: Ident -> Exp -> Tree 'Exp_ EConcat :: Exp -> Exp -> Tree 'Exp_ ECons :: Ident -> Tree 'Exp_ EConstr :: Ident -> Tree 'Exp_ EData :: Tree 'Exp_ EEmpty :: Tree 'Exp_ EEqs :: [Equation] -> Tree 'Exp_ EExtend :: Exp -> Exp -> Tree 'Exp_ EGlue :: Exp -> Exp -> Tree 'Exp_ EIdent :: Ident -> Tree 'Exp_ EIndir :: Ident -> Tree 'Exp_ EInt :: P.Integer -> Tree 'Exp_ ELString :: LString -> Tree 'Exp_ ELet :: [LocDef] -> Exp -> Tree 'Exp_ ELetb :: [LocDef] -> Exp -> Tree 'Exp_ ELin :: Ident -> Tree 'Exp_ EList :: Ident -> Exps -> Tree 'Exp_ EMeta :: Tree 'Exp_ EPre :: Exp -> [Altern] -> Tree 'Exp_ EProd :: Decl -> Exp -> Tree 'Exp_ EProj :: Exp -> Label -> Tree 'Exp_ EQCons :: Ident -> Ident -> Tree 'Exp_ EQConstr :: Ident -> Ident -> Tree 'Exp_ ERecord :: [LocDef] -> Tree 'Exp_ ESelect :: Exp -> Exp -> Tree 'Exp_ ESort :: Sort -> Tree 'Exp_ EString :: P.String -> Tree 'Exp_ EStrings :: P.String -> Tree 'Exp_ EStrs :: [Exp] -> Tree 'Exp_ ETTable :: Exp -> [Case] -> Tree 'Exp_ ETType :: Exp -> Exp -> Tree 'Exp_ ETable :: [Case] -> Tree 'Exp_ ETupTyp :: Exp -> Exp -> Tree 'Exp_ ETuple :: [TupleComp] -> Tree 'Exp_ ETyped :: Exp -> Exp -> Tree 'Exp_ EVTable :: Exp -> [Exp] -> Tree 'Exp_ EVariants :: [Exp] -> Tree 'Exp_ EWhere :: Exp -> [LocDef] -> Tree 'Exp_ ConsExp :: Exp -> Exps -> Tree 'Exps_ NilExp :: Tree 'Exps_ PC :: Ident -> [Patt] -> Tree 'Patt_ PCon :: Ident -> Tree 'Patt_ PInt :: P.Integer -> Tree 'Patt_ PQ :: Ident -> Ident -> Tree 'Patt_ PQC :: Ident -> Ident -> [Patt] -> Tree 'Patt_ PR :: [PattAss] -> Tree 'Patt_ PStr :: P.String -> Tree 'Patt_ PTup :: [PattTupleComp] -> Tree 'Patt_ PV :: Ident -> Tree 'Patt_ PW :: Tree 'Patt_ PA :: [Ident] -> Patt -> Tree 'PattAss_ LIdent :: Ident -> Tree 'Label_ LVar :: P.Integer -> Tree 'Label_ Sort_PType :: Tree 'Sort_ Sort_Str :: Tree 'Sort_ Sort_Strs :: Tree 'Sort_ Sort_Tok :: Tree 'Sort_ Sort_Type :: Tree 'Sort_ AltP :: Patt -> Tree 'PattAlt_ BIdent :: Ident -> Tree 'Bind_ BWild :: Tree 'Bind_ DDec :: [Bind] -> Exp -> Tree 'Decl_ DExp :: Exp -> Tree 'Decl_ TComp :: Exp -> Tree 'TupleComp_ PTComp :: Patt -> Tree 'PattTupleComp_ CaseC :: [PattAlt] -> Exp -> Tree 'Case_ Equ :: [Patt] -> Exp -> Tree 'Equation_ Alt :: Exp -> Exp -> Tree 'Altern_ DDDec :: [Bind] -> Exp -> Tree 'DDecl_ DDExp :: Exp -> Tree 'DDecl_ OldGr :: IncludeDecl -> [TopDef] -> Tree 'OldGrammar_ Incl :: [FileName] -> Tree 'IncludeDecl_ NoIncl :: Tree 'IncludeDecl_ FAddId :: Ident -> FileName -> Tree 'FileName_ FDot :: FileName -> Tree 'FileName_ FIdent :: Ident -> Tree 'FileName_ FMinus :: FileName -> Tree 'FileName_ FSlash :: FileName -> Tree 'FileName_ FString :: P.String -> Tree 'FileName_ Ident ::P.String -> Tree 'Ident_ LString ::P.String -> Tree 'LString_ instance Compos Tree where compos r a f = \case Gr modDefs -> r Gr `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) modDefs MMain x1 x2 concSpecs -> r MMain `a` f x1 `a` f x2 `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) concSpecs MModule complMod modType modBody -> r MModule `a` f complMod `a` f modType `a` f modBody ConcSpecC x concExp -> r ConcSpecC `a` f x `a` f concExp ConcExpC x transfers -> r ConcExpC `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) transfers TransferIn openDecl -> r TransferIn `a` f openDecl TransferOut openDecl -> r TransferOut `a` f openDecl MTAbstract x -> r MTAbstract `a` f x MTConcrete x1 x2 -> r MTConcrete `a` f x1 `a` f x2 MTInstance x1 x2 -> r MTInstance `a` f x1 `a` f x2 MTInterface x -> r MTInterface `a` f x MTResource x -> r MTResource `a` f x MTTransfer x openDecl1 openDecl2 -> r MTTransfer `a` f x `a` f openDecl1 `a` f openDecl2 MBody extend opens topDefs -> r MBody `a` f extend `a` f opens `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) topDefs MReuse x -> r MReuse `a` f x MUnion includeds -> r MUnion `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) includeds MWith x openDecls -> r MWith `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) openDecls MWithE includeds x openDecls -> r MWithE `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) includeds `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) openDecls Ext includeds -> r Ext `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) includeds OpenIn openDecls -> r OpenIn `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) openDecls OName x -> r OName `a` f x OQual qualOpen x1 x2 -> r OQual `a` f qualOpen `a` f x1 `a` f x2 OQualQO qualOpen x -> r OQualQO `a` f qualOpen `a` f x IAll x -> r IAll `a` f x IMinus x idents -> r IMinus `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents ISome x idents -> r ISome `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents DDeclC names exp -> r DDeclC `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) names `a` f exp DDef names exp -> r DDef `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) names `a` f exp DFull names exp1 exp2 -> r DFull `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) names `a` f exp1 `a` f exp2 DPatt name patts exp -> r DPatt `a` f name `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) patts `a` f exp DefCat catDefs -> r DefCat `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) catDefs DefData dataDefs -> r DefData `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) dataDefs DefDef defs -> r DefDef `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefFlag flagDefs -> r DefFlag `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) flagDefs DefFun funDefs -> r DefFun `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) funDefs DefFunData funDefs -> r DefFunData `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) funDefs DefLin defs -> r DefLin `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefLincat printDefs -> r DefLincat `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) printDefs DefLindef defs -> r DefLindef `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefLintype defs -> r DefLintype `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefOper defs -> r DefOper `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefPackage x topDefs -> r DefPackage `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) topDefs DefPar parDefs -> r DefPar `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) parDefs DefPattern defs -> r DefPattern `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefPrintCat printDefs -> r DefPrintCat `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) printDefs DefPrintFun printDefs -> r DefPrintFun `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) printDefs DefPrintOld printDefs -> r DefPrintOld `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) printDefs DefTokenizer x -> r DefTokenizer `a` f x DefTrans defs -> r DefTrans `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs DefVars defs -> r DefVars `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) defs ListCatDefC x dDecls -> r ListCatDefC `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) dDecls ListSizeCatDef x dDecls n -> r ListSizeCatDef `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) dDecls `a` r n SimpleCatDef x dDecls -> r SimpleCatDef `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) dDecls FunDefC idents exp -> r FunDefC `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents `a` f exp DataDefC x dataConstrs -> r DataDefC `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) dataConstrs DataId x -> r DataId `a` f x DataQId x1 x2 -> r DataQId `a` f x1 `a` f x2 ParDefAbs x -> r ParDefAbs `a` f x ParDefDir x parConstrs -> r ParDefDir `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) parConstrs ParDefIndir x1 x2 -> r ParDefIndir `a` f x1 `a` f x2 ParConstrC x dDecls -> r ParConstrC `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) dDecls PrintDefC names exp -> r PrintDefC `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) names `a` f exp FlagDefC x1 x2 -> r FlagDefC `a` f x1 `a` f x2 IdentName x -> r IdentName `a` f x ListNameC x -> r ListNameC `a` f x LDDecl idents exp -> r LDDecl `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents `a` f exp LDDef idents exp -> r LDDef `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents `a` f exp LDFull idents exp1 exp2 -> r LDFull `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents `a` f exp1 `a` f exp2 EAbstr binds exp -> r EAbstr `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) binds `a` f exp EApp exp1 exp2 -> r EApp `a` f exp1 `a` f exp2 ECTable binds exp -> r ECTable `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) binds `a` f exp ECase exp cases -> r ECase `a` f exp `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) cases EConAt x exp -> r EConAt `a` f x `a` f exp EConcat exp1 exp2 -> r EConcat `a` f exp1 `a` f exp2 ECons x -> r ECons `a` f x EConstr x -> r EConstr `a` f x EEqs equations -> r EEqs `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) equations EExtend exp1 exp2 -> r EExtend `a` f exp1 `a` f exp2 EGlue exp1 exp2 -> r EGlue `a` f exp1 `a` f exp2 EIdent x -> r EIdent `a` f x EIndir x -> r EIndir `a` f x ELString lString -> r ELString `a` f lString ELet locDefs exp -> r ELet `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) locDefs `a` f exp ELetb locDefs exp -> r ELetb `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) locDefs `a` f exp ELin x -> r ELin `a` f x EList x exps -> r EList `a` f x `a` f exps EPre exp alterns -> r EPre `a` f exp `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) alterns EProd decl exp -> r EProd `a` f decl `a` f exp EProj exp label -> r EProj `a` f exp `a` f label EQCons x1 x2 -> r EQCons `a` f x1 `a` f x2 EQConstr x1 x2 -> r EQConstr `a` f x1 `a` f x2 ERecord locDefs -> r ERecord `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) locDefs ESelect exp1 exp2 -> r ESelect `a` f exp1 `a` f exp2 ESort sort -> r ESort `a` f sort EStrs exps -> r EStrs `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) exps ETTable exp cases -> r ETTable `a` f exp `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) cases ETType exp1 exp2 -> r ETType `a` f exp1 `a` f exp2 ETable cases -> r ETable `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) cases ETupTyp exp1 exp2 -> r ETupTyp `a` f exp1 `a` f exp2 ETuple tupleComps -> r ETuple `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) tupleComps ETyped exp1 exp2 -> r ETyped `a` f exp1 `a` f exp2 EVTable exp exps -> r EVTable `a` f exp `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) exps EVariants exps -> r EVariants `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) exps EWhere exp locDefs -> r EWhere `a` f exp `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) locDefs ConsExp exp exps -> r ConsExp `a` f exp `a` f exps PC x patts -> r PC `a` f x `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) patts PCon x -> r PCon `a` f x PQ x1 x2 -> r PQ `a` f x1 `a` f x2 PQC x1 x2 patts -> r PQC `a` f x1 `a` f x2 `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) patts PR pattAsss -> r PR `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) pattAsss PTup pattTupleComps -> r PTup `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) pattTupleComps PV x -> r PV `a` f x PA idents patt -> r PA `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) idents `a` f patt LIdent x -> r LIdent `a` f x AltP patt -> r AltP `a` f patt BIdent x -> r BIdent `a` f x DDec binds exp -> r DDec `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) binds `a` f exp DExp exp -> r DExp `a` f exp TComp exp -> r TComp `a` f exp PTComp patt -> r PTComp `a` f patt CaseC pattAlts exp -> r CaseC `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) pattAlts `a` f exp Equ patts exp -> r Equ `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) patts `a` f exp Alt exp1 exp2 -> r Alt `a` f exp1 `a` f exp2 DDDec binds exp -> r DDDec `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) binds `a` f exp DDExp exp -> r DDExp `a` f exp OldGr includeDecl topDefs -> r OldGr `a` f includeDecl `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) topDefs Incl fileNames -> r Incl `a` P.foldr (\ x z -> r (:) `a` f x `a` z) (r []) fileNames FAddId x fileName -> r FAddId `a` f x `a` f fileName FDot fileName -> r FDot `a` f fileName FIdent x -> r FIdent `a` f x FMinus fileName -> r FMinus `a` f fileName FSlash fileName -> r FSlash `a` f fileName t -> r t instance P.Show (Tree c) where showsPrec n = \case Ident str -> opar . P.showString "Ident" . P.showChar ' ' . P.showsPrec 1 str . cpar LString str -> opar . P.showString "LString" . P.showChar ' ' . P.showsPrec 1 str . cpar Gr modDefs -> opar . P.showString "Gr" . P.showChar ' ' . P.showsPrec 1 modDefs . cpar MMain x1 x2 concSpecs -> opar . P.showString "MMain" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . P.showChar ' ' . P.showsPrec 1 concSpecs . cpar MModule complMod modType modBody -> opar . P.showString "MModule" . P.showChar ' ' . P.showsPrec 1 complMod . P.showChar ' ' . P.showsPrec 1 modType . P.showChar ' ' . P.showsPrec 1 modBody . cpar ConcSpecC x concExp -> opar . P.showString "ConcSpecC" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 concExp . cpar ConcExpC x transfers -> opar . P.showString "ConcExpC" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 transfers . cpar TransferIn openDecl -> opar . P.showString "TransferIn" . P.showChar ' ' . P.showsPrec 1 openDecl . cpar TransferOut openDecl -> opar . P.showString "TransferOut" . P.showChar ' ' . P.showsPrec 1 openDecl . cpar MTAbstract x -> opar . P.showString "MTAbstract" . P.showChar ' ' . P.showsPrec 1 x . cpar MTConcrete x1 x2 -> opar . P.showString "MTConcrete" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar MTInstance x1 x2 -> opar . P.showString "MTInstance" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar MTInterface x -> opar . P.showString "MTInterface" . P.showChar ' ' . P.showsPrec 1 x . cpar MTResource x -> opar . P.showString "MTResource" . P.showChar ' ' . P.showsPrec 1 x . cpar MTTransfer x openDecl1 openDecl2 -> opar . P.showString "MTTransfer" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 openDecl1 . P.showChar ' ' . P.showsPrec 1 openDecl2 . cpar MBody extend opens topDefs -> opar . P.showString "MBody" . P.showChar ' ' . P.showsPrec 1 extend . P.showChar ' ' . P.showsPrec 1 opens . P.showChar ' ' . P.showsPrec 1 topDefs . cpar MReuse x -> opar . P.showString "MReuse" . P.showChar ' ' . P.showsPrec 1 x . cpar MUnion includeds -> opar . P.showString "MUnion" . P.showChar ' ' . P.showsPrec 1 includeds . cpar MWith x openDecls -> opar . P.showString "MWith" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 openDecls . cpar MWithE includeds x openDecls -> opar . P.showString "MWithE" . P.showChar ' ' . P.showsPrec 1 includeds . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 openDecls . cpar Ext includeds -> opar . P.showString "Ext" . P.showChar ' ' . P.showsPrec 1 includeds . cpar NoExt -> P.showString "NoExt" NoOpens -> P.showString "NoOpens" OpenIn openDecls -> opar . P.showString "OpenIn" . P.showChar ' ' . P.showsPrec 1 openDecls . cpar OName x -> opar . P.showString "OName" . P.showChar ' ' . P.showsPrec 1 x . cpar OQual qualOpen x1 x2 -> opar . P.showString "OQual" . P.showChar ' ' . P.showsPrec 1 qualOpen . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar OQualQO qualOpen x -> opar . P.showString "OQualQO" . P.showChar ' ' . P.showsPrec 1 qualOpen . P.showChar ' ' . P.showsPrec 1 x . cpar CMCompl -> P.showString "CMCompl" CMIncompl -> P.showString "CMIncompl" QOCompl -> P.showString "QOCompl" QOIncompl -> P.showString "QOIncompl" QOInterface -> P.showString "QOInterface" IAll x -> opar . P.showString "IAll" . P.showChar ' ' . P.showsPrec 1 x . cpar IMinus x idents -> opar . P.showString "IMinus" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 idents . cpar ISome x idents -> opar . P.showString "ISome" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 idents . cpar DDeclC names exp -> opar . P.showString "DDeclC" . P.showChar ' ' . P.showsPrec 1 names . P.showChar ' ' . P.showsPrec 1 exp . cpar DDef names exp -> opar . P.showString "DDef" . P.showChar ' ' . P.showsPrec 1 names . P.showChar ' ' . P.showsPrec 1 exp . cpar DFull names exp1 exp2 -> opar . P.showString "DFull" . P.showChar ' ' . P.showsPrec 1 names . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar DPatt name patts exp -> opar . P.showString "DPatt" . P.showChar ' ' . P.showsPrec 1 name . P.showChar ' ' . P.showsPrec 1 patts . P.showChar ' ' . P.showsPrec 1 exp . cpar DefCat catDefs -> opar . P.showString "DefCat" . P.showChar ' ' . P.showsPrec 1 catDefs . cpar DefData dataDefs -> opar . P.showString "DefData" . P.showChar ' ' . P.showsPrec 1 dataDefs . cpar DefDef defs -> opar . P.showString "DefDef" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefFlag flagDefs -> opar . P.showString "DefFlag" . P.showChar ' ' . P.showsPrec 1 flagDefs . cpar DefFun funDefs -> opar . P.showString "DefFun" . P.showChar ' ' . P.showsPrec 1 funDefs . cpar DefFunData funDefs -> opar . P.showString "DefFunData" . P.showChar ' ' . P.showsPrec 1 funDefs . cpar DefLin defs -> opar . P.showString "DefLin" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefLincat printDefs -> opar . P.showString "DefLincat" . P.showChar ' ' . P.showsPrec 1 printDefs . cpar DefLindef defs -> opar . P.showString "DefLindef" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefLintype defs -> opar . P.showString "DefLintype" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefOper defs -> opar . P.showString "DefOper" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefPackage x topDefs -> opar . P.showString "DefPackage" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 topDefs . cpar DefPar parDefs -> opar . P.showString "DefPar" . P.showChar ' ' . P.showsPrec 1 parDefs . cpar DefPattern defs -> opar . P.showString "DefPattern" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefPrintCat printDefs -> opar . P.showString "DefPrintCat" . P.showChar ' ' . P.showsPrec 1 printDefs . cpar DefPrintFun printDefs -> opar . P.showString "DefPrintFun" . P.showChar ' ' . P.showsPrec 1 printDefs . cpar DefPrintOld printDefs -> opar . P.showString "DefPrintOld" . P.showChar ' ' . P.showsPrec 1 printDefs . cpar DefTokenizer x -> opar . P.showString "DefTokenizer" . P.showChar ' ' . P.showsPrec 1 x . cpar DefTrans defs -> opar . P.showString "DefTrans" . P.showChar ' ' . P.showsPrec 1 defs . cpar DefVars defs -> opar . P.showString "DefVars" . P.showChar ' ' . P.showsPrec 1 defs . cpar ListCatDefC x dDecls -> opar . P.showString "ListCatDefC" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 dDecls . cpar ListSizeCatDef x dDecls n -> opar . P.showString "ListSizeCatDef" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 dDecls . P.showChar ' ' . P.showsPrec 1 n . cpar SimpleCatDef x dDecls -> opar . P.showString "SimpleCatDef" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 dDecls . cpar FunDefC idents exp -> opar . P.showString "FunDefC" . P.showChar ' ' . P.showsPrec 1 idents . P.showChar ' ' . P.showsPrec 1 exp . cpar DataDefC x dataConstrs -> opar . P.showString "DataDefC" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 dataConstrs . cpar DataId x -> opar . P.showString "DataId" . P.showChar ' ' . P.showsPrec 1 x . cpar DataQId x1 x2 -> opar . P.showString "DataQId" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar ParDefAbs x -> opar . P.showString "ParDefAbs" . P.showChar ' ' . P.showsPrec 1 x . cpar ParDefDir x parConstrs -> opar . P.showString "ParDefDir" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 parConstrs . cpar ParDefIndir x1 x2 -> opar . P.showString "ParDefIndir" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar ParConstrC x dDecls -> opar . P.showString "ParConstrC" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 dDecls . cpar PrintDefC names exp -> opar . P.showString "PrintDefC" . P.showChar ' ' . P.showsPrec 1 names . P.showChar ' ' . P.showsPrec 1 exp . cpar FlagDefC x1 x2 -> opar . P.showString "FlagDefC" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar IdentName x -> opar . P.showString "IdentName" . P.showChar ' ' . P.showsPrec 1 x . cpar ListNameC x -> opar . P.showString "ListNameC" . P.showChar ' ' . P.showsPrec 1 x . cpar LDDecl idents exp -> opar . P.showString "LDDecl" . P.showChar ' ' . P.showsPrec 1 idents . P.showChar ' ' . P.showsPrec 1 exp . cpar LDDef idents exp -> opar . P.showString "LDDef" . P.showChar ' ' . P.showsPrec 1 idents . P.showChar ' ' . P.showsPrec 1 exp . cpar LDFull idents exp1 exp2 -> opar . P.showString "LDFull" . P.showChar ' ' . P.showsPrec 1 idents . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar EAbstr binds exp -> opar . P.showString "EAbstr" . P.showChar ' ' . P.showsPrec 1 binds . P.showChar ' ' . P.showsPrec 1 exp . cpar EApp exp1 exp2 -> opar . P.showString "EApp" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar ECTable binds exp -> opar . P.showString "ECTable" . P.showChar ' ' . P.showsPrec 1 binds . P.showChar ' ' . P.showsPrec 1 exp . cpar ECase exp cases -> opar . P.showString "ECase" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 cases . cpar EConAt x exp -> opar . P.showString "EConAt" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 exp . cpar EConcat exp1 exp2 -> opar . P.showString "EConcat" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar ECons x -> opar . P.showString "ECons" . P.showChar ' ' . P.showsPrec 1 x . cpar EConstr x -> opar . P.showString "EConstr" . P.showChar ' ' . P.showsPrec 1 x . cpar EData -> P.showString "EData" EEmpty -> P.showString "EEmpty" EEqs equations -> opar . P.showString "EEqs" . P.showChar ' ' . P.showsPrec 1 equations . cpar EExtend exp1 exp2 -> opar . P.showString "EExtend" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar EGlue exp1 exp2 -> opar . P.showString "EGlue" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar EIdent x -> opar . P.showString "EIdent" . P.showChar ' ' . P.showsPrec 1 x . cpar EIndir x -> opar . P.showString "EIndir" . P.showChar ' ' . P.showsPrec 1 x . cpar EInt n -> opar . P.showString "EInt" . P.showChar ' ' . P.showsPrec 1 n . cpar ELString lString -> opar . P.showString "ELString" . P.showChar ' ' . P.showsPrec 1 lString . cpar ELet locDefs exp -> opar . P.showString "ELet" . P.showChar ' ' . P.showsPrec 1 locDefs . P.showChar ' ' . P.showsPrec 1 exp . cpar ELetb locDefs exp -> opar . P.showString "ELetb" . P.showChar ' ' . P.showsPrec 1 locDefs . P.showChar ' ' . P.showsPrec 1 exp . cpar ELin x -> opar . P.showString "ELin" . P.showChar ' ' . P.showsPrec 1 x . cpar EList x exps -> opar . P.showString "EList" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 exps . cpar EMeta -> P.showString "EMeta" EPre exp alterns -> opar . P.showString "EPre" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 alterns . cpar EProd decl exp -> opar . P.showString "EProd" . P.showChar ' ' . P.showsPrec 1 decl . P.showChar ' ' . P.showsPrec 1 exp . cpar EProj exp label -> opar . P.showString "EProj" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 label . cpar EQCons x1 x2 -> opar . P.showString "EQCons" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar EQConstr x1 x2 -> opar . P.showString "EQConstr" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar ERecord locDefs -> opar . P.showString "ERecord" . P.showChar ' ' . P.showsPrec 1 locDefs . cpar ESelect exp1 exp2 -> opar . P.showString "ESelect" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar ESort sort -> opar . P.showString "ESort" . P.showChar ' ' . P.showsPrec 1 sort . cpar EString str -> opar . P.showString "EString" . P.showChar ' ' . P.showsPrec 1 str . cpar EStrings str -> opar . P.showString "EStrings" . P.showChar ' ' . P.showsPrec 1 str . cpar EStrs exps -> opar . P.showString "EStrs" . P.showChar ' ' . P.showsPrec 1 exps . cpar ETTable exp cases -> opar . P.showString "ETTable" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 cases . cpar ETType exp1 exp2 -> opar . P.showString "ETType" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar ETable cases -> opar . P.showString "ETable" . P.showChar ' ' . P.showsPrec 1 cases . cpar ETupTyp exp1 exp2 -> opar . P.showString "ETupTyp" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar ETuple tupleComps -> opar . P.showString "ETuple" . P.showChar ' ' . P.showsPrec 1 tupleComps . cpar ETyped exp1 exp2 -> opar . P.showString "ETyped" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar EVTable exp exps -> opar . P.showString "EVTable" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 exps . cpar EVariants exps -> opar . P.showString "EVariants" . P.showChar ' ' . P.showsPrec 1 exps . cpar EWhere exp locDefs -> opar . P.showString "EWhere" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 locDefs . cpar ConsExp exp exps -> opar . P.showString "ConsExp" . P.showChar ' ' . P.showsPrec 1 exp . P.showChar ' ' . P.showsPrec 1 exps . cpar NilExp -> P.showString "NilExp" PC x patts -> opar . P.showString "PC" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 patts . cpar PCon x -> opar . P.showString "PCon" . P.showChar ' ' . P.showsPrec 1 x . cpar PInt n -> opar . P.showString "PInt" . P.showChar ' ' . P.showsPrec 1 n . cpar PQ x1 x2 -> opar . P.showString "PQ" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . cpar PQC x1 x2 patts -> opar . P.showString "PQC" . P.showChar ' ' . P.showsPrec 1 x1 . P.showChar ' ' . P.showsPrec 1 x2 . P.showChar ' ' . P.showsPrec 1 patts . cpar PR pattAsss -> opar . P.showString "PR" . P.showChar ' ' . P.showsPrec 1 pattAsss . cpar PStr str -> opar . P.showString "PStr" . P.showChar ' ' . P.showsPrec 1 str . cpar PTup pattTupleComps -> opar . P.showString "PTup" . P.showChar ' ' . P.showsPrec 1 pattTupleComps . cpar PV x -> opar . P.showString "PV" . P.showChar ' ' . P.showsPrec 1 x . cpar PW -> P.showString "PW" PA idents patt -> opar . P.showString "PA" . P.showChar ' ' . P.showsPrec 1 idents . P.showChar ' ' . P.showsPrec 1 patt . cpar LIdent x -> opar . P.showString "LIdent" . P.showChar ' ' . P.showsPrec 1 x . cpar LVar n -> opar . P.showString "LVar" . P.showChar ' ' . P.showsPrec 1 n . cpar Sort_PType -> P.showString "Sort_PType" Sort_Str -> P.showString "Sort_Str" Sort_Strs -> P.showString "Sort_Strs" Sort_Tok -> P.showString "Sort_Tok" Sort_Type -> P.showString "Sort_Type" AltP patt -> opar . P.showString "AltP" . P.showChar ' ' . P.showsPrec 1 patt . cpar BIdent x -> opar . P.showString "BIdent" . P.showChar ' ' . P.showsPrec 1 x . cpar BWild -> P.showString "BWild" DDec binds exp -> opar . P.showString "DDec" . P.showChar ' ' . P.showsPrec 1 binds . P.showChar ' ' . P.showsPrec 1 exp . cpar DExp exp -> opar . P.showString "DExp" . P.showChar ' ' . P.showsPrec 1 exp . cpar TComp exp -> opar . P.showString "TComp" . P.showChar ' ' . P.showsPrec 1 exp . cpar PTComp patt -> opar . P.showString "PTComp" . P.showChar ' ' . P.showsPrec 1 patt . cpar CaseC pattAlts exp -> opar . P.showString "CaseC" . P.showChar ' ' . P.showsPrec 1 pattAlts . P.showChar ' ' . P.showsPrec 1 exp . cpar Equ patts exp -> opar . P.showString "Equ" . P.showChar ' ' . P.showsPrec 1 patts . P.showChar ' ' . P.showsPrec 1 exp . cpar Alt exp1 exp2 -> opar . P.showString "Alt" . P.showChar ' ' . P.showsPrec 1 exp1 . P.showChar ' ' . P.showsPrec 1 exp2 . cpar DDDec binds exp -> opar . P.showString "DDDec" . P.showChar ' ' . P.showsPrec 1 binds . P.showChar ' ' . P.showsPrec 1 exp . cpar DDExp exp -> opar . P.showString "DDExp" . P.showChar ' ' . P.showsPrec 1 exp . cpar OldGr includeDecl topDefs -> opar . P.showString "OldGr" . P.showChar ' ' . P.showsPrec 1 includeDecl . P.showChar ' ' . P.showsPrec 1 topDefs . cpar Incl fileNames -> opar . P.showString "Incl" . P.showChar ' ' . P.showsPrec 1 fileNames . cpar NoIncl -> P.showString "NoIncl" FAddId x fileName -> opar . P.showString "FAddId" . P.showChar ' ' . P.showsPrec 1 x . P.showChar ' ' . P.showsPrec 1 fileName . cpar FDot fileName -> opar . P.showString "FDot" . P.showChar ' ' . P.showsPrec 1 fileName . cpar FIdent x -> opar . P.showString "FIdent" . P.showChar ' ' . P.showsPrec 1 x . cpar FMinus fileName -> opar . P.showString "FMinus" . P.showChar ' ' . P.showsPrec 1 fileName . cpar FSlash fileName -> opar . P.showString "FSlash" . P.showChar ' ' . P.showsPrec 1 fileName . cpar FString str -> opar . P.showString "FString" . P.showChar ' ' . P.showsPrec 1 str . cpar where opar = if n > 0 then P.showChar '(' else P.id cpar = if n > 0 then P.showChar ')' else P.id instance P.Eq (Tree c) where (==) = johnMajorEq instance P.Ord (Tree c) where compare x y = P.compare (index x) (index y) `P.mappend` compareSame x y index :: Tree c -> P.Int index (Gr _) = 1 index (MMain _ _ _) = 2 index (MModule _ _ _) = 3 index (ConcSpecC _ _) = 4 index (ConcExpC _ _) = 5 index (TransferIn _) = 6 index (TransferOut _) = 7 index (MTAbstract _) = 8 index (MTConcrete _ _) = 9 index (MTInstance _ _) = 10 index (MTInterface _) = 11 index (MTResource _) = 12 index (MTTransfer _ _ _) = 13 index (MBody _ _ _) = 14 index (MReuse _) = 15 index (MUnion _) = 16 index (MWith _ _) = 17 index (MWithE _ _ _) = 18 index (Ext _) = 19 index (NoExt ) = 20 index (NoOpens ) = 21 index (OpenIn _) = 22 index (OName _) = 23 index (OQual _ _ _) = 24 index (OQualQO _ _) = 25 index (CMCompl ) = 26 index (CMIncompl ) = 27 index (QOCompl ) = 28 index (QOIncompl ) = 29 index (QOInterface ) = 30 index (IAll _) = 31 index (IMinus _ _) = 32 index (ISome _ _) = 33 index (DDeclC _ _) = 34 index (DDef _ _) = 35 index (DFull _ _ _) = 36 index (DPatt _ _ _) = 37 index (DefCat _) = 38 index (DefData _) = 39 index (DefDef _) = 40 index (DefFlag _) = 41 index (DefFun _) = 42 index (DefFunData _) = 43 index (DefLin _) = 44 index (DefLincat _) = 45 index (DefLindef _) = 46 index (DefLintype _) = 47 index (DefOper _) = 48 index (DefPackage _ _) = 49 index (DefPar _) = 50 index (DefPattern _) = 51 index (DefPrintCat _) = 52 index (DefPrintFun _) = 53 index (DefPrintOld _) = 54 index (DefTokenizer _) = 55 index (DefTrans _) = 56 index (DefVars _) = 57 index (ListCatDefC _ _) = 58 index (ListSizeCatDef _ _ _) = 59 index (SimpleCatDef _ _) = 60 index (FunDefC _ _) = 61 index (DataDefC _ _) = 62 index (DataId _) = 63 index (DataQId _ _) = 64 index (ParDefAbs _) = 65 index (ParDefDir _ _) = 66 index (ParDefIndir _ _) = 67 index (ParConstrC _ _) = 68 index (PrintDefC _ _) = 69 index (FlagDefC _ _) = 70 index (IdentName _) = 71 index (ListNameC _) = 72 index (LDDecl _ _) = 73 index (LDDef _ _) = 74 index (LDFull _ _ _) = 75 index (EAbstr _ _) = 76 index (EApp _ _) = 77 index (ECTable _ _) = 78 index (ECase _ _) = 79 index (EConAt _ _) = 80 index (EConcat _ _) = 81 index (ECons _) = 82 index (EConstr _) = 83 index (EData ) = 84 index (EEmpty ) = 85 index (EEqs _) = 86 index (EExtend _ _) = 87 index (EGlue _ _) = 88 index (EIdent _) = 89 index (EIndir _) = 90 index (EInt _) = 91 index (ELString _) = 92 index (ELet _ _) = 93 index (ELetb _ _) = 94 index (ELin _) = 95 index (EList _ _) = 96 index (EMeta ) = 97 index (EPre _ _) = 98 index (EProd _ _) = 99 index (EProj _ _) = 100 index (EQCons _ _) = 101 index (EQConstr _ _) = 102 index (ERecord _) = 103 index (ESelect _ _) = 104 index (ESort _) = 105 index (EString _) = 106 index (EStrings _) = 107 index (EStrs _) = 108 index (ETTable _ _) = 109 index (ETType _ _) = 110 index (ETable _) = 111 index (ETupTyp _ _) = 112 index (ETuple _) = 113 index (ETyped _ _) = 114 index (EVTable _ _) = 115 index (EVariants _) = 116 index (EWhere _ _) = 117 index (ConsExp _ _) = 118 index (NilExp ) = 119 index (PC _ _) = 120 index (PCon _) = 121 index (PInt _) = 122 index (PQ _ _) = 123 index (PQC _ _ _) = 124 index (PR _) = 125 index (PStr _) = 126 index (PTup _) = 127 index (PV _) = 128 index (PW ) = 129 index (PA _ _) = 130 index (LIdent _) = 131 index (LVar _) = 132 index (Sort_PType ) = 133 index (Sort_Str ) = 134 index (Sort_Strs ) = 135 index (Sort_Tok ) = 136 index (Sort_Type ) = 137 index (AltP _) = 138 index (BIdent _) = 139 index (BWild ) = 140 index (DDec _ _) = 141 index (DExp _) = 142 index (TComp _) = 143 index (PTComp _) = 144 index (CaseC _ _) = 145 index (Equ _ _) = 146 index (Alt _ _) = 147 index (DDDec _ _) = 148 index (DDExp _) = 149 index (OldGr _ _) = 150 index (Incl _) = 151 index (NoIncl ) = 152 index (FAddId _ _) = 153 index (FDot _) = 154 index (FIdent _) = 155 index (FMinus _) = 156 index (FSlash _) = 157 index (FString _) = 158 index (Ident _) = 159 index (LString _) = 160 johnMajorEq :: Tree a -> Tree b -> P.Bool johnMajorEq (Gr modDefs) (Gr modDefs_) = modDefs == modDefs_ johnMajorEq (MMain x1 x2 concSpecs) (MMain x1_ x2_ concSpecs_) = x1 == x1_ && x2 == x2_ && concSpecs == concSpecs_ johnMajorEq (MModule complMod modType modBody) (MModule complMod_ modType_ modBody_) = complMod == complMod_ && modType == modType_ && modBody == modBody_ johnMajorEq (ConcSpecC x concExp) (ConcSpecC x_ concExp_) = x == x_ && concExp == concExp_ johnMajorEq (ConcExpC x transfers) (ConcExpC x_ transfers_) = x == x_ && transfers == transfers_ johnMajorEq (TransferIn openDecl) (TransferIn openDecl_) = openDecl == openDecl_ johnMajorEq (TransferOut openDecl) (TransferOut openDecl_) = openDecl == openDecl_ johnMajorEq (MTAbstract x) (MTAbstract x_) = x == x_ johnMajorEq (MTConcrete x1 x2) (MTConcrete x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (MTInstance x1 x2) (MTInstance x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (MTInterface x) (MTInterface x_) = x == x_ johnMajorEq (MTResource x) (MTResource x_) = x == x_ johnMajorEq (MTTransfer x openDecl1 openDecl2) (MTTransfer x_ openDecl1_ openDecl2_) = x == x_ && openDecl1 == openDecl1_ && openDecl2 == openDecl2_ johnMajorEq (MBody extend opens topDefs) (MBody extend_ opens_ topDefs_) = extend == extend_ && opens == opens_ && topDefs == topDefs_ johnMajorEq (MReuse x) (MReuse x_) = x == x_ johnMajorEq (MUnion includeds) (MUnion includeds_) = includeds == includeds_ johnMajorEq (MWith x openDecls) (MWith x_ openDecls_) = x == x_ && openDecls == openDecls_ johnMajorEq (MWithE includeds x openDecls) (MWithE includeds_ x_ openDecls_) = includeds == includeds_ && x == x_ && openDecls == openDecls_ johnMajorEq (Ext includeds) (Ext includeds_) = includeds == includeds_ johnMajorEq NoExt NoExt = P.True johnMajorEq NoOpens NoOpens = P.True johnMajorEq (OpenIn openDecls) (OpenIn openDecls_) = openDecls == openDecls_ johnMajorEq (OName x) (OName x_) = x == x_ johnMajorEq (OQual qualOpen x1 x2) (OQual qualOpen_ x1_ x2_) = qualOpen == qualOpen_ && x1 == x1_ && x2 == x2_ johnMajorEq (OQualQO qualOpen x) (OQualQO qualOpen_ x_) = qualOpen == qualOpen_ && x == x_ johnMajorEq CMCompl CMCompl = P.True johnMajorEq CMIncompl CMIncompl = P.True johnMajorEq QOCompl QOCompl = P.True johnMajorEq QOIncompl QOIncompl = P.True johnMajorEq QOInterface QOInterface = P.True johnMajorEq (IAll x) (IAll x_) = x == x_ johnMajorEq (IMinus x idents) (IMinus x_ idents_) = x == x_ && idents == idents_ johnMajorEq (ISome x idents) (ISome x_ idents_) = x == x_ && idents == idents_ johnMajorEq (DDeclC names exp) (DDeclC names_ exp_) = names == names_ && exp == exp_ johnMajorEq (DDef names exp) (DDef names_ exp_) = names == names_ && exp == exp_ johnMajorEq (DFull names exp1 exp2) (DFull names_ exp1_ exp2_) = names == names_ && exp1 == exp1_ && exp2 == exp2_ johnMajorEq (DPatt name patts exp) (DPatt name_ patts_ exp_) = name == name_ && patts == patts_ && exp == exp_ johnMajorEq (DefCat catDefs) (DefCat catDefs_) = catDefs == catDefs_ johnMajorEq (DefData dataDefs) (DefData dataDefs_) = dataDefs == dataDefs_ johnMajorEq (DefDef defs) (DefDef defs_) = defs == defs_ johnMajorEq (DefFlag flagDefs) (DefFlag flagDefs_) = flagDefs == flagDefs_ johnMajorEq (DefFun funDefs) (DefFun funDefs_) = funDefs == funDefs_ johnMajorEq (DefFunData funDefs) (DefFunData funDefs_) = funDefs == funDefs_ johnMajorEq (DefLin defs) (DefLin defs_) = defs == defs_ johnMajorEq (DefLincat printDefs) (DefLincat printDefs_) = printDefs == printDefs_ johnMajorEq (DefLindef defs) (DefLindef defs_) = defs == defs_ johnMajorEq (DefLintype defs) (DefLintype defs_) = defs == defs_ johnMajorEq (DefOper defs) (DefOper defs_) = defs == defs_ johnMajorEq (DefPackage x topDefs) (DefPackage x_ topDefs_) = x == x_ && topDefs == topDefs_ johnMajorEq (DefPar parDefs) (DefPar parDefs_) = parDefs == parDefs_ johnMajorEq (DefPattern defs) (DefPattern defs_) = defs == defs_ johnMajorEq (DefPrintCat printDefs) (DefPrintCat printDefs_) = printDefs == printDefs_ johnMajorEq (DefPrintFun printDefs) (DefPrintFun printDefs_) = printDefs == printDefs_ johnMajorEq (DefPrintOld printDefs) (DefPrintOld printDefs_) = printDefs == printDefs_ johnMajorEq (DefTokenizer x) (DefTokenizer x_) = x == x_ johnMajorEq (DefTrans defs) (DefTrans defs_) = defs == defs_ johnMajorEq (DefVars defs) (DefVars defs_) = defs == defs_ johnMajorEq (ListCatDefC x dDecls) (ListCatDefC x_ dDecls_) = x == x_ && dDecls == dDecls_ johnMajorEq (ListSizeCatDef x dDecls n) (ListSizeCatDef x_ dDecls_ n_) = x == x_ && dDecls == dDecls_ && n == n_ johnMajorEq (SimpleCatDef x dDecls) (SimpleCatDef x_ dDecls_) = x == x_ && dDecls == dDecls_ johnMajorEq (FunDefC idents exp) (FunDefC idents_ exp_) = idents == idents_ && exp == exp_ johnMajorEq (DataDefC x dataConstrs) (DataDefC x_ dataConstrs_) = x == x_ && dataConstrs == dataConstrs_ johnMajorEq (DataId x) (DataId x_) = x == x_ johnMajorEq (DataQId x1 x2) (DataQId x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (ParDefAbs x) (ParDefAbs x_) = x == x_ johnMajorEq (ParDefDir x parConstrs) (ParDefDir x_ parConstrs_) = x == x_ && parConstrs == parConstrs_ johnMajorEq (ParDefIndir x1 x2) (ParDefIndir x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (ParConstrC x dDecls) (ParConstrC x_ dDecls_) = x == x_ && dDecls == dDecls_ johnMajorEq (PrintDefC names exp) (PrintDefC names_ exp_) = names == names_ && exp == exp_ johnMajorEq (FlagDefC x1 x2) (FlagDefC x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (IdentName x) (IdentName x_) = x == x_ johnMajorEq (ListNameC x) (ListNameC x_) = x == x_ johnMajorEq (LDDecl idents exp) (LDDecl idents_ exp_) = idents == idents_ && exp == exp_ johnMajorEq (LDDef idents exp) (LDDef idents_ exp_) = idents == idents_ && exp == exp_ johnMajorEq (LDFull idents exp1 exp2) (LDFull idents_ exp1_ exp2_) = idents == idents_ && exp1 == exp1_ && exp2 == exp2_ johnMajorEq (EAbstr binds exp) (EAbstr binds_ exp_) = binds == binds_ && exp == exp_ johnMajorEq (EApp exp1 exp2) (EApp exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (ECTable binds exp) (ECTable binds_ exp_) = binds == binds_ && exp == exp_ johnMajorEq (ECase exp cases) (ECase exp_ cases_) = exp == exp_ && cases == cases_ johnMajorEq (EConAt x exp) (EConAt x_ exp_) = x == x_ && exp == exp_ johnMajorEq (EConcat exp1 exp2) (EConcat exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (ECons x) (ECons x_) = x == x_ johnMajorEq (EConstr x) (EConstr x_) = x == x_ johnMajorEq EData EData = P.True johnMajorEq EEmpty EEmpty = P.True johnMajorEq (EEqs equations) (EEqs equations_) = equations == equations_ johnMajorEq (EExtend exp1 exp2) (EExtend exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (EGlue exp1 exp2) (EGlue exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (EIdent x) (EIdent x_) = x == x_ johnMajorEq (EIndir x) (EIndir x_) = x == x_ johnMajorEq (EInt n) (EInt n_) = n == n_ johnMajorEq (ELString lString) (ELString lString_) = lString == lString_ johnMajorEq (ELet locDefs exp) (ELet locDefs_ exp_) = locDefs == locDefs_ && exp == exp_ johnMajorEq (ELetb locDefs exp) (ELetb locDefs_ exp_) = locDefs == locDefs_ && exp == exp_ johnMajorEq (ELin x) (ELin x_) = x == x_ johnMajorEq (EList x exps) (EList x_ exps_) = x == x_ && exps == exps_ johnMajorEq EMeta EMeta = P.True johnMajorEq (EPre exp alterns) (EPre exp_ alterns_) = exp == exp_ && alterns == alterns_ johnMajorEq (EProd decl exp) (EProd decl_ exp_) = decl == decl_ && exp == exp_ johnMajorEq (EProj exp label) (EProj exp_ label_) = exp == exp_ && label == label_ johnMajorEq (EQCons x1 x2) (EQCons x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (EQConstr x1 x2) (EQConstr x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (ERecord locDefs) (ERecord locDefs_) = locDefs == locDefs_ johnMajorEq (ESelect exp1 exp2) (ESelect exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (ESort sort) (ESort sort_) = sort == sort_ johnMajorEq (EString str) (EString str_) = str == str_ johnMajorEq (EStrings str) (EStrings str_) = str == str_ johnMajorEq (EStrs exps) (EStrs exps_) = exps == exps_ johnMajorEq (ETTable exp cases) (ETTable exp_ cases_) = exp == exp_ && cases == cases_ johnMajorEq (ETType exp1 exp2) (ETType exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (ETable cases) (ETable cases_) = cases == cases_ johnMajorEq (ETupTyp exp1 exp2) (ETupTyp exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (ETuple tupleComps) (ETuple tupleComps_) = tupleComps == tupleComps_ johnMajorEq (ETyped exp1 exp2) (ETyped exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (EVTable exp exps) (EVTable exp_ exps_) = exp == exp_ && exps == exps_ johnMajorEq (EVariants exps) (EVariants exps_) = exps == exps_ johnMajorEq (EWhere exp locDefs) (EWhere exp_ locDefs_) = exp == exp_ && locDefs == locDefs_ johnMajorEq (ConsExp exp exps) (ConsExp exp_ exps_) = exp == exp_ && exps == exps_ johnMajorEq NilExp NilExp = P.True johnMajorEq (PC x patts) (PC x_ patts_) = x == x_ && patts == patts_ johnMajorEq (PCon x) (PCon x_) = x == x_ johnMajorEq (PInt n) (PInt n_) = n == n_ johnMajorEq (PQ x1 x2) (PQ x1_ x2_) = x1 == x1_ && x2 == x2_ johnMajorEq (PQC x1 x2 patts) (PQC x1_ x2_ patts_) = x1 == x1_ && x2 == x2_ && patts == patts_ johnMajorEq (PR pattAsss) (PR pattAsss_) = pattAsss == pattAsss_ johnMajorEq (PStr str) (PStr str_) = str == str_ johnMajorEq (PTup pattTupleComps) (PTup pattTupleComps_) = pattTupleComps == pattTupleComps_ johnMajorEq (PV x) (PV x_) = x == x_ johnMajorEq PW PW = P.True johnMajorEq (PA idents patt) (PA idents_ patt_) = idents == idents_ && patt == patt_ johnMajorEq (LIdent x) (LIdent x_) = x == x_ johnMajorEq (LVar n) (LVar n_) = n == n_ johnMajorEq Sort_PType Sort_PType = P.True johnMajorEq Sort_Str Sort_Str = P.True johnMajorEq Sort_Strs Sort_Strs = P.True johnMajorEq Sort_Tok Sort_Tok = P.True johnMajorEq Sort_Type Sort_Type = P.True johnMajorEq (AltP patt) (AltP patt_) = patt == patt_ johnMajorEq (BIdent x) (BIdent x_) = x == x_ johnMajorEq BWild BWild = P.True johnMajorEq (DDec binds exp) (DDec binds_ exp_) = binds == binds_ && exp == exp_ johnMajorEq (DExp exp) (DExp exp_) = exp == exp_ johnMajorEq (TComp exp) (TComp exp_) = exp == exp_ johnMajorEq (PTComp patt) (PTComp patt_) = patt == patt_ johnMajorEq (CaseC pattAlts exp) (CaseC pattAlts_ exp_) = pattAlts == pattAlts_ && exp == exp_ johnMajorEq (Equ patts exp) (Equ patts_ exp_) = patts == patts_ && exp == exp_ johnMajorEq (Alt exp1 exp2) (Alt exp1_ exp2_) = exp1 == exp1_ && exp2 == exp2_ johnMajorEq (DDDec binds exp) (DDDec binds_ exp_) = binds == binds_ && exp == exp_ johnMajorEq (DDExp exp) (DDExp exp_) = exp == exp_ johnMajorEq (OldGr includeDecl topDefs) (OldGr includeDecl_ topDefs_) = includeDecl == includeDecl_ && topDefs == topDefs_ johnMajorEq (Incl fileNames) (Incl fileNames_) = fileNames == fileNames_ johnMajorEq NoIncl NoIncl = P.True johnMajorEq (FAddId x fileName) (FAddId x_ fileName_) = x == x_ && fileName == fileName_ johnMajorEq (FDot fileName) (FDot fileName_) = fileName == fileName_ johnMajorEq (FIdent x) (FIdent x_) = x == x_ johnMajorEq (FMinus fileName) (FMinus fileName_) = fileName == fileName_ johnMajorEq (FSlash fileName) (FSlash fileName_) = fileName == fileName_ johnMajorEq (FString str) (FString str_) = str == str_ johnMajorEq (Ident str) (Ident str_) = str == str_ johnMajorEq (LString str) (LString str_) = str == str_ johnMajorEq _ _ = P.False compareSame :: Tree c -> Tree c -> P.Ordering compareSame (Gr modDefs) (Gr modDefs_) = P.compare modDefs modDefs_ compareSame (MMain x1 x2 concSpecs) (MMain x1_ x2_ concSpecs_) = P.mappend (P.compare x1 x1_) (P.mappend (P.compare x2 x2_) (P.compare concSpecs concSpecs_)) compareSame (MModule complMod modType modBody) (MModule complMod_ modType_ modBody_) = P.mappend (P.compare complMod complMod_) (P.mappend (P.compare modType modType_) (P.compare modBody modBody_)) compareSame (ConcSpecC x concExp) (ConcSpecC x_ concExp_) = P.mappend (P.compare x x_) (P.compare concExp concExp_) compareSame (ConcExpC x transfers) (ConcExpC x_ transfers_) = P.mappend (P.compare x x_) (P.compare transfers transfers_) compareSame (TransferIn openDecl) (TransferIn openDecl_) = P.compare openDecl openDecl_ compareSame (TransferOut openDecl) (TransferOut openDecl_) = P.compare openDecl openDecl_ compareSame (MTAbstract x) (MTAbstract x_) = P.compare x x_ compareSame (MTConcrete x1 x2) (MTConcrete x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (MTInstance x1 x2) (MTInstance x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (MTInterface x) (MTInterface x_) = P.compare x x_ compareSame (MTResource x) (MTResource x_) = P.compare x x_ compareSame (MTTransfer x openDecl1 openDecl2) (MTTransfer x_ openDecl1_ openDecl2_) = P.mappend (P.compare x x_) (P.mappend (P.compare openDecl1 openDecl1_) (P.compare openDecl2 openDecl2_)) compareSame (MBody extend opens topDefs) (MBody extend_ opens_ topDefs_) = P.mappend (P.compare extend extend_) (P.mappend (P.compare opens opens_) (P.compare topDefs topDefs_)) compareSame (MReuse x) (MReuse x_) = P.compare x x_ compareSame (MUnion includeds) (MUnion includeds_) = P.compare includeds includeds_ compareSame (MWith x openDecls) (MWith x_ openDecls_) = P.mappend (P.compare x x_) (P.compare openDecls openDecls_) compareSame (MWithE includeds x openDecls) (MWithE includeds_ x_ openDecls_) = P.mappend (P.compare includeds includeds_) (P.mappend (P.compare x x_) (P.compare openDecls openDecls_)) compareSame (Ext includeds) (Ext includeds_) = P.compare includeds includeds_ compareSame NoExt NoExt = P.EQ compareSame NoOpens NoOpens = P.EQ compareSame (OpenIn openDecls) (OpenIn openDecls_) = P.compare openDecls openDecls_ compareSame (OName x) (OName x_) = P.compare x x_ compareSame (OQual qualOpen x1 x2) (OQual qualOpen_ x1_ x2_) = P.mappend (P.compare qualOpen qualOpen_) (P.mappend (P.compare x1 x1_) (P.compare x2 x2_)) compareSame (OQualQO qualOpen x) (OQualQO qualOpen_ x_) = P.mappend (P.compare qualOpen qualOpen_) (P.compare x x_) compareSame CMCompl CMCompl = P.EQ compareSame CMIncompl CMIncompl = P.EQ compareSame QOCompl QOCompl = P.EQ compareSame QOIncompl QOIncompl = P.EQ compareSame QOInterface QOInterface = P.EQ compareSame (IAll x) (IAll x_) = P.compare x x_ compareSame (IMinus x idents) (IMinus x_ idents_) = P.mappend (P.compare x x_) (P.compare idents idents_) compareSame (ISome x idents) (ISome x_ idents_) = P.mappend (P.compare x x_) (P.compare idents idents_) compareSame (DDeclC names exp) (DDeclC names_ exp_) = P.mappend (P.compare names names_) (P.compare exp exp_) compareSame (DDef names exp) (DDef names_ exp_) = P.mappend (P.compare names names_) (P.compare exp exp_) compareSame (DFull names exp1 exp2) (DFull names_ exp1_ exp2_) = P.mappend (P.compare names names_) (P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_)) compareSame (DPatt name patts exp) (DPatt name_ patts_ exp_) = P.mappend (P.compare name name_) (P.mappend (P.compare patts patts_) (P.compare exp exp_)) compareSame (DefCat catDefs) (DefCat catDefs_) = P.compare catDefs catDefs_ compareSame (DefData dataDefs) (DefData dataDefs_) = P.compare dataDefs dataDefs_ compareSame (DefDef defs) (DefDef defs_) = P.compare defs defs_ compareSame (DefFlag flagDefs) (DefFlag flagDefs_) = P.compare flagDefs flagDefs_ compareSame (DefFun funDefs) (DefFun funDefs_) = P.compare funDefs funDefs_ compareSame (DefFunData funDefs) (DefFunData funDefs_) = P.compare funDefs funDefs_ compareSame (DefLin defs) (DefLin defs_) = P.compare defs defs_ compareSame (DefLincat printDefs) (DefLincat printDefs_) = P.compare printDefs printDefs_ compareSame (DefLindef defs) (DefLindef defs_) = P.compare defs defs_ compareSame (DefLintype defs) (DefLintype defs_) = P.compare defs defs_ compareSame (DefOper defs) (DefOper defs_) = P.compare defs defs_ compareSame (DefPackage x topDefs) (DefPackage x_ topDefs_) = P.mappend (P.compare x x_) (P.compare topDefs topDefs_) compareSame (DefPar parDefs) (DefPar parDefs_) = P.compare parDefs parDefs_ compareSame (DefPattern defs) (DefPattern defs_) = P.compare defs defs_ compareSame (DefPrintCat printDefs) (DefPrintCat printDefs_) = P.compare printDefs printDefs_ compareSame (DefPrintFun printDefs) (DefPrintFun printDefs_) = P.compare printDefs printDefs_ compareSame (DefPrintOld printDefs) (DefPrintOld printDefs_) = P.compare printDefs printDefs_ compareSame (DefTokenizer x) (DefTokenizer x_) = P.compare x x_ compareSame (DefTrans defs) (DefTrans defs_) = P.compare defs defs_ compareSame (DefVars defs) (DefVars defs_) = P.compare defs defs_ compareSame (ListCatDefC x dDecls) (ListCatDefC x_ dDecls_) = P.mappend (P.compare x x_) (P.compare dDecls dDecls_) compareSame (ListSizeCatDef x dDecls n) (ListSizeCatDef x_ dDecls_ n_) = P.mappend (P.compare x x_) (P.mappend (P.compare dDecls dDecls_) (P.compare n n_)) compareSame (SimpleCatDef x dDecls) (SimpleCatDef x_ dDecls_) = P.mappend (P.compare x x_) (P.compare dDecls dDecls_) compareSame (FunDefC idents exp) (FunDefC idents_ exp_) = P.mappend (P.compare idents idents_) (P.compare exp exp_) compareSame (DataDefC x dataConstrs) (DataDefC x_ dataConstrs_) = P.mappend (P.compare x x_) (P.compare dataConstrs dataConstrs_) compareSame (DataId x) (DataId x_) = P.compare x x_ compareSame (DataQId x1 x2) (DataQId x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (ParDefAbs x) (ParDefAbs x_) = P.compare x x_ compareSame (ParDefDir x parConstrs) (ParDefDir x_ parConstrs_) = P.mappend (P.compare x x_) (P.compare parConstrs parConstrs_) compareSame (ParDefIndir x1 x2) (ParDefIndir x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (ParConstrC x dDecls) (ParConstrC x_ dDecls_) = P.mappend (P.compare x x_) (P.compare dDecls dDecls_) compareSame (PrintDefC names exp) (PrintDefC names_ exp_) = P.mappend (P.compare names names_) (P.compare exp exp_) compareSame (FlagDefC x1 x2) (FlagDefC x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (IdentName x) (IdentName x_) = P.compare x x_ compareSame (ListNameC x) (ListNameC x_) = P.compare x x_ compareSame (LDDecl idents exp) (LDDecl idents_ exp_) = P.mappend (P.compare idents idents_) (P.compare exp exp_) compareSame (LDDef idents exp) (LDDef idents_ exp_) = P.mappend (P.compare idents idents_) (P.compare exp exp_) compareSame (LDFull idents exp1 exp2) (LDFull idents_ exp1_ exp2_) = P.mappend (P.compare idents idents_) (P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_)) compareSame (EAbstr binds exp) (EAbstr binds_ exp_) = P.mappend (P.compare binds binds_) (P.compare exp exp_) compareSame (EApp exp1 exp2) (EApp exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (ECTable binds exp) (ECTable binds_ exp_) = P.mappend (P.compare binds binds_) (P.compare exp exp_) compareSame (ECase exp cases) (ECase exp_ cases_) = P.mappend (P.compare exp exp_) (P.compare cases cases_) compareSame (EConAt x exp) (EConAt x_ exp_) = P.mappend (P.compare x x_) (P.compare exp exp_) compareSame (EConcat exp1 exp2) (EConcat exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (ECons x) (ECons x_) = P.compare x x_ compareSame (EConstr x) (EConstr x_) = P.compare x x_ compareSame EData EData = P.EQ compareSame EEmpty EEmpty = P.EQ compareSame (EEqs equations) (EEqs equations_) = P.compare equations equations_ compareSame (EExtend exp1 exp2) (EExtend exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (EGlue exp1 exp2) (EGlue exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (EIdent x) (EIdent x_) = P.compare x x_ compareSame (EIndir x) (EIndir x_) = P.compare x x_ compareSame (EInt n) (EInt n_) = P.compare n n_ compareSame (ELString lString) (ELString lString_) = P.compare lString lString_ compareSame (ELet locDefs exp) (ELet locDefs_ exp_) = P.mappend (P.compare locDefs locDefs_) (P.compare exp exp_) compareSame (ELetb locDefs exp) (ELetb locDefs_ exp_) = P.mappend (P.compare locDefs locDefs_) (P.compare exp exp_) compareSame (ELin x) (ELin x_) = P.compare x x_ compareSame (EList x exps) (EList x_ exps_) = P.mappend (P.compare x x_) (P.compare exps exps_) compareSame EMeta EMeta = P.EQ compareSame (EPre exp alterns) (EPre exp_ alterns_) = P.mappend (P.compare exp exp_) (P.compare alterns alterns_) compareSame (EProd decl exp) (EProd decl_ exp_) = P.mappend (P.compare decl decl_) (P.compare exp exp_) compareSame (EProj exp label) (EProj exp_ label_) = P.mappend (P.compare exp exp_) (P.compare label label_) compareSame (EQCons x1 x2) (EQCons x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (EQConstr x1 x2) (EQConstr x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (ERecord locDefs) (ERecord locDefs_) = P.compare locDefs locDefs_ compareSame (ESelect exp1 exp2) (ESelect exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (ESort sort) (ESort sort_) = P.compare sort sort_ compareSame (EString str) (EString str_) = P.compare str str_ compareSame (EStrings str) (EStrings str_) = P.compare str str_ compareSame (EStrs exps) (EStrs exps_) = P.compare exps exps_ compareSame (ETTable exp cases) (ETTable exp_ cases_) = P.mappend (P.compare exp exp_) (P.compare cases cases_) compareSame (ETType exp1 exp2) (ETType exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (ETable cases) (ETable cases_) = P.compare cases cases_ compareSame (ETupTyp exp1 exp2) (ETupTyp exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (ETuple tupleComps) (ETuple tupleComps_) = P.compare tupleComps tupleComps_ compareSame (ETyped exp1 exp2) (ETyped exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (EVTable exp exps) (EVTable exp_ exps_) = P.mappend (P.compare exp exp_) (P.compare exps exps_) compareSame (EVariants exps) (EVariants exps_) = P.compare exps exps_ compareSame (EWhere exp locDefs) (EWhere exp_ locDefs_) = P.mappend (P.compare exp exp_) (P.compare locDefs locDefs_) compareSame (ConsExp exp exps) (ConsExp exp_ exps_) = P.mappend (P.compare exp exp_) (P.compare exps exps_) compareSame NilExp NilExp = P.EQ compareSame (PC x patts) (PC x_ patts_) = P.mappend (P.compare x x_) (P.compare patts patts_) compareSame (PCon x) (PCon x_) = P.compare x x_ compareSame (PInt n) (PInt n_) = P.compare n n_ compareSame (PQ x1 x2) (PQ x1_ x2_) = P.mappend (P.compare x1 x1_) (P.compare x2 x2_) compareSame (PQC x1 x2 patts) (PQC x1_ x2_ patts_) = P.mappend (P.compare x1 x1_) (P.mappend (P.compare x2 x2_) (P.compare patts patts_)) compareSame (PR pattAsss) (PR pattAsss_) = P.compare pattAsss pattAsss_ compareSame (PStr str) (PStr str_) = P.compare str str_ compareSame (PTup pattTupleComps) (PTup pattTupleComps_) = P.compare pattTupleComps pattTupleComps_ compareSame (PV x) (PV x_) = P.compare x x_ compareSame PW PW = P.EQ compareSame (PA idents patt) (PA idents_ patt_) = P.mappend (P.compare idents idents_) (P.compare patt patt_) compareSame (LIdent x) (LIdent x_) = P.compare x x_ compareSame (LVar n) (LVar n_) = P.compare n n_ compareSame Sort_PType Sort_PType = P.EQ compareSame Sort_Str Sort_Str = P.EQ compareSame Sort_Strs Sort_Strs = P.EQ compareSame Sort_Tok Sort_Tok = P.EQ compareSame Sort_Type Sort_Type = P.EQ compareSame (AltP patt) (AltP patt_) = P.compare patt patt_ compareSame (BIdent x) (BIdent x_) = P.compare x x_ compareSame BWild BWild = P.EQ compareSame (DDec binds exp) (DDec binds_ exp_) = P.mappend (P.compare binds binds_) (P.compare exp exp_) compareSame (DExp exp) (DExp exp_) = P.compare exp exp_ compareSame (TComp exp) (TComp exp_) = P.compare exp exp_ compareSame (PTComp patt) (PTComp patt_) = P.compare patt patt_ compareSame (CaseC pattAlts exp) (CaseC pattAlts_ exp_) = P.mappend (P.compare pattAlts pattAlts_) (P.compare exp exp_) compareSame (Equ patts exp) (Equ patts_ exp_) = P.mappend (P.compare patts patts_) (P.compare exp exp_) compareSame (Alt exp1 exp2) (Alt exp1_ exp2_) = P.mappend (P.compare exp1 exp1_) (P.compare exp2 exp2_) compareSame (DDDec binds exp) (DDDec binds_ exp_) = P.mappend (P.compare binds binds_) (P.compare exp exp_) compareSame (DDExp exp) (DDExp exp_) = P.compare exp exp_ compareSame (OldGr includeDecl topDefs) (OldGr includeDecl_ topDefs_) = P.mappend (P.compare includeDecl includeDecl_) (P.compare topDefs topDefs_) compareSame (Incl fileNames) (Incl fileNames_) = P.compare fileNames fileNames_ compareSame NoIncl NoIncl = P.EQ compareSame (FAddId x fileName) (FAddId x_ fileName_) = P.mappend (P.compare x x_) (P.compare fileName fileName_) compareSame (FDot fileName) (FDot fileName_) = P.compare fileName fileName_ compareSame (FIdent x) (FIdent x_) = P.compare x x_ compareSame (FMinus fileName) (FMinus fileName_) = P.compare fileName fileName_ compareSame (FSlash fileName) (FSlash fileName_) = P.compare fileName fileName_ compareSame (FString str) (FString str_) = P.compare str str_ compareSame (Ident str) (Ident str_) = P.compare str str_ compareSame (LString str) (LString str_) = P.compare str str_ compareSame _ _ = P.error "BNFC error: compareSame"