aboutsummaryrefslogtreecommitdiff
path: root/src/Experiments/NewPipeline/Language.v
diff options
context:
space:
mode:
Diffstat (limited to 'src/Experiments/NewPipeline/Language.v')
-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 08da2ff6c..971ae81ef 100644
--- a/src/Experiments/NewPipeline/Language.v
+++ b/src/Experiments/NewPipeline/Language.v
@@ -766,6 +766,8 @@ Module Compilers.
| list_case {A P:base.type} : ident ((unit -> P) -> (A -> list A -> P) -> list A -> P)
| List_length {T} : ident (list T -> nat)
| List_seq : ident (nat -> nat -> list nat)
+ | List_firstn {A:base.type} : ident (nat -> list A -> list A)
+ | List_skipn {A:base.type} : ident (nat -> list A -> list A)
| List_repeat {A:base.type} : ident (A -> nat -> list A)
| List_combine {A B} : ident (list A -> list B -> list (A * B))
| List_map {A B:base.type} : ident ((A -> B) -> list A -> list B)
@@ -893,6 +895,8 @@ Module Compilers.
=> fun N_case C_case => ListUtil.list_case _ (N_case tt) C_case
| List_length T => @List.length _
| List_seq => List.seq
+ | List_firstn A => @List.firstn _
+ | List_skipn A => @List.skipn _
| List_repeat A => @repeat _
| List_combine A B => @List.combine _ _
| List_map A B => @List.map _ _
@@ -1081,6 +1085,12 @@ Module Compilers.
let rA := base.reify A in
then_tac (@ident.List_length rA)
| List.seq => then_tac ident.List_seq
+ | @List.firstn ?A
+ => let rA := base.reify A in
+ then_tac (@ident.List_firstn rA)
+ | @List.skipn ?A
+ => let rA := base.reify A in
+ then_tac (@ident.List_skipn rA)
| @repeat ?A
=> let rA := base.reify A in
then_tac (@ident.List_repeat rA)