The following OCaml code surprised me at first: # let age = 20;; val age : int = 20 # let older () = age + 1;; val older : unit -> int = <fun> # older();; - : int = 21 # let age = 35;; val age : int = 35 # older () ;; - : int = 21 and: # let f x = 2 * x;; val f : int -> int = <fun> # let g x = f (f x);; val g : int -> int = <fun> # g 5;; - : int = 20 # let f x = 3 * x;; val f : int -> int = <fun> # g 5;; - : int = 20 When you think of it a bit more, it makes sense. OCaml is a statically/strongly typed compiled language. ... [243 words]