-- File generated by the BNF Converter. -- Templates for pattern matching on abstract syntax {-# LANGUAGE GADTs #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} module SkelCore where import Prelude (($), Either(..), String, (++), Show, show) import qualified AbsCore type Err = Either String type Result = Err String failure :: Show a => a -> Result failure x = Left $ "Undefined case: " ++ show x transTree :: AbsCore.Tree c -> Result transTree t = case t of AbsCore.Module x tdefs vdefgs -> failure t AbsCore.Data qualIdent tbinds cdefs -> failure t AbsCore.Newtype qualIdent tbinds maybeTy -> failure t AbsCore.JustTy ty -> failure t AbsCore.NoTy -> failure t AbsCore.Constr qualIdent aTbinds tyts -> failure t AbsCore.TT ty -> failure t AbsCore.Nonrec vdef -> failure t AbsCore.Rec vdefs -> failure t AbsCore.VdefQ qualIdent ty exp -> failure t AbsCore.VdefU x ty exp -> failure t AbsCore.App exp1 exp2 -> failure t AbsCore.Appt exp ty -> failure t AbsCore.Case exp vbind alts -> failure t AbsCore.Coerce ty exp -> failure t AbsCore.Dcon qualIdent -> failure t AbsCore.External str ty -> failure t AbsCore.Lams binds exp -> failure t AbsCore.Let vdefg exp -> failure t AbsCore.Litc lit -> failure t AbsCore.Note str exp -> failure t AbsCore.Var x -> failure t AbsCore.Tb tbind -> failure t AbsCore.Vb vbind -> failure t AbsCore.Acon qualIdent aTbinds vbinds exp -> failure t AbsCore.Adefault exp -> failure t AbsCore.Alit lit exp -> failure t AbsCore.Vbind x ty -> failure t AbsCore.TbindLift x -> failure t AbsCore.TbindPair x kind -> failure t AbsCore.ATbind tbind -> failure t AbsCore.TArrow ty1 ty2 -> failure t AbsCore.Tapp ty1 ty2 -> failure t AbsCore.Tcon qualIdent -> failure t AbsCore.Tforalls tbinds ty -> failure t AbsCore.Tvar x -> failure t AbsCore.Karrow kind1 kind2 -> failure t AbsCore.Klifted -> failure t AbsCore.Kopen -> failure t AbsCore.Kunlifted -> failure t AbsCore.Lchar c ty -> failure t AbsCore.Lint n ty -> failure t AbsCore.Lrational d ty -> failure t AbsCore.Lstring str ty -> failure t AbsCore.Qual x1 x2 -> failure t transIdent :: AbsCore.Ident -> Result transIdent x = case x of AbsCore.Ident string -> failure x transModule :: AbsCore.Module -> Result transModule x = case x of AbsCore.Module x tdefs vdefgs -> failure x transTdef :: AbsCore.Tdef -> Result transTdef x = case x of AbsCore.Data qualIdent tbinds cdefs -> failure x AbsCore.Newtype qualIdent tbinds maybeTy -> failure x transMaybeTy :: AbsCore.MaybeTy -> Result transMaybeTy x = case x of AbsCore.JustTy ty -> failure x AbsCore.NoTy -> failure x transCdef :: AbsCore.Cdef -> Result transCdef x = case x of AbsCore.Constr qualIdent aTbinds tyts -> failure x transTyt :: AbsCore.Tyt -> Result transTyt x = case x of AbsCore.TT ty -> failure x transVdefg :: AbsCore.Vdefg -> Result transVdefg x = case x of AbsCore.Nonrec vdef -> failure x AbsCore.Rec vdefs -> failure x transVdef :: AbsCore.Vdef -> Result transVdef x = case x of AbsCore.VdefQ qualIdent ty exp -> failure x AbsCore.VdefU x ty exp -> failure x transExp :: AbsCore.Exp -> Result transExp x = case x of AbsCore.App exp1 exp2 -> failure x AbsCore.Appt exp ty -> failure x AbsCore.Case exp vbind alts -> failure x AbsCore.Coerce ty exp -> failure x AbsCore.Dcon qualIdent -> failure x AbsCore.External str ty -> failure x AbsCore.Lams binds exp -> failure x AbsCore.Let vdefg exp -> failure x AbsCore.Litc lit -> failure x AbsCore.Note str exp -> failure x AbsCore.Var x -> failure x transBind :: AbsCore.Bind -> Result transBind x = case x of AbsCore.Tb tbind -> failure x AbsCore.Vb vbind -> failure x transAlt :: AbsCore.Alt -> Result transAlt x = case x of AbsCore.Acon qualIdent aTbinds vbinds exp -> failure x AbsCore.Adefault exp -> failure x AbsCore.Alit lit exp -> failure x transVbind :: AbsCore.Vbind -> Result transVbind x = case x of AbsCore.Vbind x ty -> failure x transTbind :: AbsCore.Tbind -> Result transTbind x = case x of AbsCore.TbindLift x -> failure x AbsCore.TbindPair x kind -> failure x transATbind :: AbsCore.ATbind -> Result transATbind x = case x of AbsCore.ATbind tbind -> failure x transTy :: AbsCore.Ty -> Result transTy x = case x of AbsCore.TArrow ty1 ty2 -> failure x AbsCore.Tapp ty1 ty2 -> failure x AbsCore.Tcon qualIdent -> failure x AbsCore.Tforalls tbinds ty -> failure x AbsCore.Tvar x -> failure x transKind :: AbsCore.Kind -> Result transKind x = case x of AbsCore.Karrow kind1 kind2 -> failure x AbsCore.Klifted -> failure x AbsCore.Kopen -> failure x AbsCore.Kunlifted -> failure x transLit :: AbsCore.Lit -> Result transLit x = case x of AbsCore.Lchar c ty -> failure x AbsCore.Lint n ty -> failure x AbsCore.Lrational d ty -> failure x AbsCore.Lstring str ty -> failure x transQualIdent :: AbsCore.QualIdent -> Result transQualIdent x = case x of AbsCore.Qual x1 x2 -> failure x