summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_lib.lem
diff options
context:
space:
mode:
Diffstat (limited to 'src/lem_interp/interp_lib.lem')
-rw-r--r--src/lem_interp/interp_lib.lem12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem
index 9d7bba05..b1b3736e 100644
--- a/src/lem_interp/interp_lib.lem
+++ b/src/lem_interp/interp_lib.lem
@@ -70,10 +70,14 @@ let to_vec_inc len (V_lit(L_aux (L_num n) ln)) =
let to_vec_dec len (V_lit(L_aux (L_num n) ln)) =
let l = boolListFrombitSeq len (bitSeqFromInteger Nothing n) in
V_vector 0 false (map bool_to_bit l) ;;
-let to_vec ord len v =
+let to_vec ord len n =
if ord
- then to_vec_inc len v
- else to_vec_dec len v
+ then to_vec_inc len n
+ else to_vec_dec len n
+;;
+
+let exts len ((V_vector _ inc _) as v) =
+ to_vec inc len (to_num true v)
;;
(* XXX work-around to avoid truncating *)
@@ -131,7 +135,7 @@ let function_map = [
("is_one", is_one);
("to_num_inc", to_num false);
("to_num_dec", to_num false);
- ("exts", to_num true);
+ ("exts", exts 64);
(* XXX the size of the target vector should be given by the interpreter *)
("to_vec_inc", to_vec_inc 64);
("to_vec_dec", to_vec_dec 64);