What is the length of int in OCaml? It is said that int in OCaml is 31. But I get this:
# (1 lsl 33);; - : int = 8589934592
8589934592 is larger than 2^31.
On my laptop (64-bit Fedora Linux), the int in OCaml is 63 bits. The code (
count1s counts the number of bit 1s in an integer):
let rec count1s x = match (x lsr 1, x land 1) with | 0, n -> n | y, n -> n + count1s y count1s (-1);;