X-Git-Url: http://git.megacz.com/?p=coq-hetmet.git;a=blobdiff_plain;f=src%2FHaskCore.v;h=b05c34f2937bd679e3f36265d1badf398018a2cc;hp=64699fd4a4a1f757dfa41b38ce07b1fff0104456;hb=f6ee1ec88c9b94c62eccbd4119082ae11073a886;hpb=703bff3b209bd7d114b49cb736da8af167a4ec71 diff --git a/src/HaskCore.v b/src/HaskCore.v index 64699fd..b05c34f 100644 --- a/src/HaskCore.v +++ b/src/HaskCore.v @@ -6,8 +6,9 @@ Generalizable All Variables. Require Import Preamble. Require Import General. Require Import Coq.Strings.String. -Require Import HaskGeneral. +Require Import HaskKinds. Require Import HaskLiterals. +Require Import HaskTyCons. Require Import HaskCoreTypes. Require Import HaskCoreVars. @@ -18,7 +19,7 @@ Inductive CoreExpr {b:Type} := | CoreEApp : CoreExpr -> CoreExpr -> CoreExpr | CoreELam : b -> CoreExpr -> CoreExpr | CoreELet : CoreBind -> CoreExpr -> CoreExpr -| CoreECase : CoreExpr -> b -> CoreType -> list (@triple AltCon (list b) CoreExpr) -> CoreExpr +| CoreECase : CoreExpr -> b -> CoreType -> list (@triple CoreAltCon (list b) CoreExpr) -> CoreExpr | CoreECast : CoreExpr -> CoreCoercion -> CoreExpr | CoreENote : Note -> CoreExpr -> CoreExpr | CoreEType : CoreType -> CoreExpr @@ -39,21 +40,8 @@ Extract Inductive CoreExpr => Extract Inductive CoreBind => "CoreSyn.Bind" [ "CoreSyn.NonRec" "CoreSyn.Rec" ]. -(* extracts the Name from a CoreVar *) -Variable coreVarCoreName : CoreVar -> CoreName. Extract Inlined Constant coreVarCoreName => "Var.varName". - -Extract Constant ArrowTyCon => "Type.funTyCon". (* Figure 7, (->) *) -Extract Constant CoFunConst => "TyCon.TyCon". Extraction Implicit CoFunConst [ 1 ]. -Extract Constant TyFunConst => "TyCon.TyCon". Extraction Implicit TyFunConst [ 1 ]. - -(*Extract Inlined Constant getDataCons => "TyCon.tyConDataCons".*) -Variable mkTyConApp : forall n, TyCon n -> list CoreType -> CoreType. - Extract Inlined Constant mkTyConApp => "Type.mkTyConApp". - -(* the magic wired-in name for the modal type introduction form *) -Variable hetmet_brak_name : CoreName. Extract Inlined Constant hetmet_brak_name => "PrelNames.hetmet_brak_name". - -(* the magic wired-in name for the modal type elimination form *) -Variable hetmet_esc_name : CoreName. Extract Inlined Constant hetmet_esc_name => "PrelNames.hetmet_esc_name". - +Variable coreExprToString : @CoreExpr CoreVar -> string. Extract Inlined Constant coreExprToString => "outputableToString". +Instance CoreExprToString : ToString (@CoreExpr CoreVar) := { toString := coreExprToString }. +Variable coreTypeOfCoreExpr : @CoreExpr CoreVar -> CoreType. + Extract Inlined Constant coreTypeOfCoreExpr => "CoreUtils.exprType".