let s = "hello world" let n : int = 87 let id x = x let add x y = x + y let add' x y = let left = x in let right = y in x + y let add'' : int -> int -> int = fun x -> fun y -> x + y let unwrap_option default opt = match opt with | None -> default | Some v -> v let string_of_bool = function true -> "true" | false -> "false" let is_a c = if c = 'a' then true else false let _ = Printf.printf "%s" "hello" let () = Printf.printf "%s\n" "world" let x = ref 0 let _ = x := 1 type my_bool = True | False type shape = Circle of float | Square of float | Rectangle of (float * float) type user = { login : string; password : string; } type 'a my_ref = { mutable ref_value : 'a } let (:=) r v = r.ref_value <- v let (+) 2 2 = 5 exception Bad_value of string let bad_value_error () = raise (Bad_value "your value is bad and you should feel bad") let () = try bad_value_error () with Bad_value _ -> () let () = try bad_value_error () with | Bad_value _ -> () | Not_found -> () module type FOO = sig val foo : 'a -> 'a end module Foo : FOO = struct let foo x = x end let greeter = object val greeting = "Hello" method greet name = Printf.sprintf "%s, %s!" greeting name end let greeting = greeter#greet "world" class greeter_factory greeting_text = object (self) val greeting = greeting_text method greet name = Printf.sprintf "%s, %s!" greeting name initializer Printf.printf "Objects will greet the user with \"%s\"\n" greeting end let g = new greeter_factory "Hi"