summaryrefslogtreecommitdiff
path: root/src/lem_interp/interp_lib.lem
diff options
context:
space:
mode:
authorGabriel Kerneis2014-04-01 14:22:31 +0100
committerGabriel Kerneis2014-04-01 14:22:31 +0100
commitdfe90bb7a44ff3a753d2bf31b1c510aeff824494 (patch)
treeff50bdaf285ef2489c62afa769999cca02956a42 /src/lem_interp/interp_lib.lem
parentc8fbe777c32bfa6355349110e14f0244090421da (diff)
Allow negative "nat" internally
to_num and to_vec probably still need to be fixed
Diffstat (limited to 'src/lem_interp/interp_lib.lem')
-rw-r--r--src/lem_interp/interp_lib.lem9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/lem_interp/interp_lib.lem b/src/lem_interp/interp_lib.lem
index 9b3ba3b0..9a183f7f 100644
--- a/src/lem_interp/interp_lib.lem
+++ b/src/lem_interp/interp_lib.lem
@@ -31,16 +31,17 @@ let bool_to_bit b = match b with
* By convention, MSB is on the left, so increasing = Big-Endian (MSB0),
* hence MSB first.
* http://en.wikipedia.org/wiki/Bit_numbering *)
+(* XXX signedness probably broken here *)
let to_num_inc (V_vector idx true l) =
- V_lit(L_aux (L_num(naturalFromBitSeq (BitSeq Nothing false (map bit_to_bool (reverse l))))) Unknown);;
+ V_lit(L_aux (L_num(integerFromBitSeq (Maybe_extra.fromJust (bitSeqFromBoolList (map bit_to_bool (reverse l)))))) Unknown);;
let to_num_dec (V_vector idx false l) =
- V_lit(L_aux (L_num(naturalFromBitSeq (BitSeq Nothing false (map bit_to_bool l)))) Unknown);;
+ V_lit(L_aux (L_num(integerFromBitSeq (Maybe_extra.fromJust (bitSeqFromBoolList (map bit_to_bool l))))) Unknown);;
let to_vec_inc len (V_lit(L_aux (L_num n) ln)) =
- let l = boolListFrombitSeq len (bitSeqFromNatural Nothing n) in
+ let l = boolListFrombitSeq len (bitSeqFromInteger Nothing n) in
V_vector 0 true (map bool_to_bit (reverse l)) ;;
let to_vec_dec len (V_lit(L_aux (L_num n) ln)) =
- let l = boolListFrombitSeq len (bitSeqFromNatural Nothing n) in
+ let l = boolListFrombitSeq len (bitSeqFromInteger Nothing n) in
V_vector 0 false (map bool_to_bit l) ;;
let rec add (V_tuple args) = match args with