aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Jason Gross <jgross@mit.edu>2018-10-24 16:29:05 -0400
committerGravatar Jason Gross <jgross@mit.edu>2018-10-24 16:29:05 -0400
commite76a588c1040132e0d401b26186844d2e4ada0f8 (patch)
tree75ae32a8b17029b40880f23071f7591128ee508f /src
parent8caaa7d70e62de31827c420a802cc8b87aa6cbc3 (diff)
Add GallinaReify.reify_as_interp
Diffstat (limited to 'src')
-rw-r--r--src/Experiments/NewPipeline/Language.v10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/Experiments/NewPipeline/Language.v b/src/Experiments/NewPipeline/Language.v
index 1d263e291..bd668c50e 100644
--- a/src/Experiments/NewPipeline/Language.v
+++ b/src/Experiments/NewPipeline/Language.v
@@ -1645,6 +1645,16 @@ Module Compilers.
end.
End reify.
+ Fixpoint reify_as_interp {t : type} {struct t}
+ : type.interp base.interp t -> @expr (type.interp base.interp) t
+ := match t return type.interp base.interp t -> expr t with
+ | type.arrow s d
+ => fun (f : type.interp base.interp s -> type.interp base.interp d)
+ => (λ x , @reify_as_interp d (f x))%expr
+ | type.base t
+ => @base.reify _ t
+ end.
+
Definition Reify_as (t : type) (v : forall var, value var t) : Expr t
:= fun var => reify (v _).