content: {-# LANGUAGE GADTs #-}
  module SkelTTR where
  
  -- Haskell module generated by the BNF converter
  
  import AbsTTR
  import ErrM
  type Result = Err String
  
  failure :: Show a => a -> Result
  failure x = Bad $ "Undefined case: " ++ show x
  
  transTree :: Tree c -> Result
  transTree t = case t of
    TJments jments -> failure t
    JIn exp0 exp1 -> failure t
    JEq exp0 exp1 -> failure t
    JEqIn exp0 exp1 exp2 -> failure t
    JSub exp0 exp1 -> failure t
    JSubIn exp0 exp1 exp2 -> failure t
    EId id -> failure t
    EStr str -> failure t
    EInt n -> failure t
    EFloat d -> failure t
    ERecTyp  -> failure t
    ERecord fields -> failure t
    ESetTy exp -> failure t
    EListTy exp -> failure t
    EApps exp exps -> failure t
    ELamApp lambdas exp exps -> failure t
    EProj exp id -> failure t
    ECompl exp -> failure t
    EJoin exp0 id1 exp2 -> failure t
    EUnion exp0 exp1 -> failure t
    EInters exp0 exp1 -> failure t
    EMerge exp0 exp1 -> failure t
    EConcat exp0 exp1 -> failure t
    ELambs lambdas exp -> failure t
    EProd id exp0 exp1 -> failure t
    EFun exp0 exp1 -> failure t
    ECFun exp0 exp1 -> failure t
    ELet id exp0 exp1 exp2 -> failure t
    EMul exp0 exp1 -> failure t
    EDiv exp0 exp1 -> failure t
    EAdd exp0 exp1 -> failure t
    ESub exp0 exp1 -> failure t
    ECat exp0 exp1 -> failure t
    EAbs id exp0 exp1 -> failure t
    EApp exp0 exp1 -> failure t
    FIn id exp -> failure t
    FEq id exp -> failure t
    FEqIn id exp0 exp1 -> failure t
    LAbs id exp -> failure t
    Id str -> failure t
  
  transText :: Text -> Result
  transText t = case t of
    TJments jments -> failure t
  
  transJment :: Jment -> Result
  transJment t = case t of
    JIn exp0 exp1 -> failure t
    JEq exp0 exp1 -> failure t
    JEqIn exp0 exp1 exp2 -> failure t
    JSub exp0 exp1 -> failure t
    JSubIn exp0 exp1 exp2 -> failure t
  
  transExp :: Exp -> Result
  transExp t = case t of
    EId id -> failure t
    EStr str -> failure t
    EInt n -> failure t
    EFloat d -> failure t
    ERecTyp  -> failure t
    ERecord fields -> failure t
    ESetTy exp -> failure t
    EListTy exp -> failure t
    EApps exp exps -> failure t
    ELamApp lambdas exp exps -> failure t
    EProj exp id -> failure t
    ECompl exp -> failure t
    EJoin exp0 id1 exp2 -> failure t
    EUnion exp0 exp1 -> failure t
    EInters exp0 exp1 -> failure t
    EMerge exp0 exp1 -> failure t
    EConcat exp0 exp1 -> failure t
    ELambs lambdas exp -> failure t
    EProd id exp0 exp1 -> failure t
    EFun exp0 exp1 -> failure t
    ECFun exp0 exp1 -> failure t
    ELet id exp0 exp1 exp2 -> failure t
    EMul exp0 exp1 -> failure t
    EDiv exp0 exp1 -> failure t
    EAdd exp0 exp1 -> failure t
    ESub exp0 exp1 -> failure t
    ECat exp0 exp1 -> failure t
    EAbs id exp0 exp1 -> failure t
    EApp exp0 exp1 -> failure t
  
  transField :: Field -> Result
  transField t = case t of
    FIn id exp -> failure t
    FEq id exp -> failure t
    FEqIn id exp0 exp1 -> failure t
  
  transLambda :: Lambda -> Result
  transLambda t = case t of
    LAbs id exp -> failure t
  
  transId :: Id -> Result
  transId t = case t of
    Id str -> failure t
  
  