summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGabriel Kerneis2014-04-03 17:18:27 +0100
committerGabriel Kerneis2014-04-03 17:28:45 +0100
commit5e5c61be1edf11c79c2dc3a3517dd7c099116923 (patch)
treeeedc39e9df3292b963ca84461bad4c82292c4e56
parent86143f90a53dd488f2b04009f38eb4dc6cef1e15 (diff)
Re-index vector slices
- increasing vector slices are re-indexed from 0 - decreasing vector slices are re-indexed towards 0 I don't know how the type system handles this currently, but it is essential for the correctness of execution.
-rw-r--r--src/lem_interp/interp.lem4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem
index 3066d7d0..8e842730 100644
--- a/src/lem_interp/interp.lem
+++ b/src/lem_interp/interp.lem
@@ -248,8 +248,8 @@ let slice_vector v n1 n2 =
match v with
| V_vector m inc vs ->
if inc
- then V_vector n1 inc (from_n_to_n (n1 - m) (n2 - m) vs)
- else V_vector n1 inc (from_n_to_n (m - n1) (m - n2) vs)
+ then V_vector 0 inc (from_n_to_n (n1 - m) (n2 - m) vs)
+ else V_vector (n1 - n2 + 1) inc (from_n_to_n (m - n1) (m - n2) vs)
end
val update_field_list : list (id * value) -> list (id * value) -> list (id * value)