diff options
| author | Gabriel Kerneis | 2014-04-03 17:18:27 +0100 |
|---|---|---|
| committer | Gabriel Kerneis | 2014-04-03 17:28:45 +0100 |
| commit | 5e5c61be1edf11c79c2dc3a3517dd7c099116923 (patch) | |
| tree | eedc39e9df3292b963ca84461bad4c82292c4e56 /src | |
| parent | 86143f90a53dd488f2b04009f38eb4dc6cef1e15 (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.
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/interp.lem | 4 |
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) |
