diff options
| author | Gabriel Kerneis | 2014-04-01 14:22:31 +0100 |
|---|---|---|
| committer | Gabriel Kerneis | 2014-04-01 14:22:31 +0100 |
| commit | dfe90bb7a44ff3a753d2bf31b1c510aeff824494 (patch) | |
| tree | ff50bdaf285ef2489c62afa769999cca02956a42 /src/lem_interp/interp_lib.lem | |
| parent | c8fbe777c32bfa6355349110e14f0244090421da (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.lem | 9 |
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 |
