Notes (OFVB 02/31): Names and Functions
On my system, max_int
is 2^62 - 1, min_int
is (-2)^62. Apparently OCaml uses the extra bit for some internal pointer magic.
Questions
1
let f x = x * 10
# val f : int -> int = <fun>
2
let f x y = x <> 0 && y <> 0;;
# val f : int -> int -> bool = <fun>
3
let rec f x = if x = 1 then 1 else x + f (x - 1);;
# val f : int -> int = <fun>
4
let rec power x n = if n = 0 then 1 else x * f x (n - 1);;
val power : int -> int -> int = <fun>
5
let isVowel c = c = 'a' || c = 'e' || c = 'i' || c = 'o' || c = 'u';;
# val isVowel : char -> bool = <fun>
let not x = if x then false else true;;
# val not : bool -> bool = <fun>
let isConsonant c = not (isVowel c);;
# val isConsonant : char -> bool = <fun>
6
let x = 1 in let x = 2 in x + x;;
# 26: unused variable x.
Warning int = 4 - :
OCaml searches bindings from inside to outside, so only the let x = 2
matters.
7
let rec factorial a = if a <= 0 then 0 else
# if a = 1 then 1 else a * factorial (a - 1);;
val factorial : int -> int = <fun>