diff options
| author | Kathy Gray | 2015-06-06 16:31:26 +0100 |
|---|---|---|
| committer | Kathy Gray | 2015-06-06 16:31:26 +0100 |
| commit | 1e497543545724576bd3cc24228c96fda2c47a6c (patch) | |
| tree | 1729f56ea6cbcbf291a8c32f8734c0ab022e24df /src | |
| parent | c1577421a422133c39007fbe895718fcf5dd64c4 (diff) | |
append vectors with proper length for dec case
Diffstat (limited to 'src')
| -rw-r--r-- | src/lem_interp/interp.lem | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/lem_interp/interp.lem b/src/lem_interp/interp.lem index e251c30e..b6e1a8f5 100644 --- a/src/lem_interp/interp.lem +++ b/src/lem_interp/interp.lem @@ -1710,7 +1710,14 @@ and interp_main mode t_level l_env l_mem (E_aux exp (l,annot)) = (interp_main mode t_level l_env lm e2) (fun v2 lm le -> let append v1 v2 = (match (v1,v2) with - | (V_vector m dir vals1, V_vector _ _ vals2) -> V_vector m dir (vals1++vals2) + | (V_vector m dir vals1, V_vector _ _ vals2) -> + let vals = vals1++vals2 in + let len = List.length vals in + if is_inc(dir) + then V_vector m dir vals + else if m > len + then V_vector m dir vals + else V_vector (len-1) dir vals | (V_vector m dir vals1, V_vector_sparse _ len _ vals2 d) -> let original_len = List.length vals1 in let (_,sparse_vals) = List.foldr (fun v (i,vals) -> (i+1,(i,v)::vals)) (m,[]) vals1 in |
