RosettaCodeData/Task/Variable-size-Get/OCaml/variable-size-get-2.ml

86 lines
1.1 KiB
OCaml

# sizeof 234 ;;
- : int = 1
# sizeof 23.4 ;;
- : int = 2
# sizeof (1,2);;
- : int = 3
# sizeof (2, 3.4) ;;
- : int = 4
# sizeof (1,2,3,4,5) ;;
- : int = 6
# sizeof [| 1;2;3;4;5 |] ;;
- : int = 6
# sizeof [1;2;3;4;5] ;;
- : int = 11
(* because a list is equivalent to *)
# sizeof (1,(2,(3,(4,(5,0))))) ;;
- : int = 11
# type foo = A | B of int | C of int * int ;;
type foo = A | B of int | C of int * int
# sizeof A ;;
- : int = 1
# sizeof (B 3) ;;
- : int = 2
# sizeof (C(1,2)) ;;
- : int = 3
# sizeof true ;;
- : int = 1
# sizeof 'A' ;;
- : int = 1
# sizeof `some_pvar ;;
- : int = 1
# sizeof "" ;;
- : int = 1
# sizeof "Hello!" ;;
- : int = 2
(* remember the size is given in words
(so 4 octets on 32 bits machines) *)
# for i=0 to 16 do
Printf.printf "%d -> %d\n" i (sizeof(String.create i))
done;;
0 -> 1
1 -> 1
2 -> 1
3 -> 1
4 -> 2
5 -> 2
6 -> 2
7 -> 2
8 -> 3
9 -> 3
10 -> 3
11 -> 3
12 -> 4
13 -> 4
14 -> 4
15 -> 4
16 -> 5
- : unit = ()
# sizeof(Array.create 10 0) ;;
- : int = 11
# sizeof(Array.create 10 (String.create 20)) ;;
- : int = 16
# sizeof(Array.init 10 (fun _ -> String.create 20)) ;;
- : int = 61