X-Git-Url: http://git.megacz.com/?p=coq-hetmet.git;a=blobdiff_plain;f=src%2FHaskCore.v;h=13a263ed89ef83f0fd4d75aac97b4229de569377;hp=abd14283075c4aaf1e951779fbbe1e3a131a5a32;hb=423b0bd3972c5bcbbd757cb715e13b5b9104a9a6;hpb=53d4f1ce851b924cab5dc39419179a366001cbca diff --git a/src/HaskCore.v b/src/HaskCore.v index abd1428..13a263e 100644 --- a/src/HaskCore.v +++ b/src/HaskCore.v @@ -7,7 +7,8 @@ Require Import Preamble. Require Import General. Require Import Coq.Strings.String. Require Import HaskKinds. -Require Import HaskCoreLiterals. +Require Import HaskLiterals. +Require Import HaskTyCons. Require Import HaskCoreTypes. Require Import HaskCoreVars. @@ -18,10 +19,11 @@ 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 +| CoreECoercion : CoreCoercion -> CoreExpr with CoreBind {b:Type} := | CoreNonRec : b -> CoreExpr -> CoreBind | CoreRec : list (b * CoreExpr ) -> CoreBind. @@ -35,9 +37,14 @@ Extract Inductive CoreExpr => "CoreSyn.Case" "CoreSyn.Cast" "CoreSyn.Note" - "CoreSyn.Type" ]. + "CoreSyn.Type" + "CoreSyn.Coercion" + ]. Extract Inductive CoreBind => "CoreSyn.Bind" [ "CoreSyn.NonRec" "CoreSyn.Rec" ]. Variable coreExprToString : @CoreExpr CoreVar -> string. Extract Inlined Constant coreExprToString => "outputableToString". -Instance CoreExprToString : ToString (@CoreExpr CoreVar) := { toString := coreExprToString }. \ No newline at end of file +Instance CoreExprToString : ToString (@CoreExpr CoreVar) := { toString := coreExprToString }. + +Variable coreTypeOfCoreExpr : @CoreExpr CoreVar -> CoreType. + Extract Inlined Constant coreTypeOfCoreExpr => "CoreUtils.exprType".