true;;
false;;
'a';;
'!';;
"asd";;
"\"";;
1;;
1.;;
();;
.1;;
1 = 2;;
1 = 1.;;
'a' <> 'b';;
4 < 6;;
"asd" <= "bas";;
compare;;
compare 5 7;;
compare 8 1;;
compare "a" "a";;
min 5. 8.;;
not (("a" = "b" || true) && ( false || false));;
max_int;;
-3;;
4 - 5;;
5 / 2;;
7 mod 3;;
1. /. 3.
;;
4. - 1.5;;
4. -. 1.5;;
3. ** 5.;;
1. / 0.;;
1. /. 0.;;
0. /. 0.;;
0. /. 0. = 0. /. 0.;;
"asd" ^ "qwe";;
0xA3;;
0o12;;
0b10;;
(1,2);;
(1,2,4);;
("asd", 'f', 5., 3 = 3);;
compare;;
(~-);;
type coord = int * int;;
(3,4);;
((3,4) : coord);;
((3,4) : coord) = (3,4);;
(fun x -> x * x);;
(fun x -> x *. x);;
let constant = 3;;
constant + 1;;
let square = (fun x -> x * x);;
square 5;;
let squarea x = x * x;;
type direction = Left | Right;;
Left;;
type mynat = Zero | Succ mynat;;
type mynat = Zero | Succ of mynat;;
Succ (Succ (Succ Zero));;
let rec fact n = if n < 2 then 1 else n * (fact (n - 1));;
fact 1;;
fact 3;;
fact 4;;
let f x = 0;;
let f x = if x = 0 then -1 else f (x - 1);;
f 2;;
let rec f x = if x = 0 then -1 else f (x - 1);;
f 2;;
max_int + 1;;
max_int + 1 = min_int;;
let is_left dir =
  match dir with
| Left -> true
| Right -> false
;;
is_left Left;;
is_left Right;;
let add x y = x + y;;
add 3;;
let add3 = add 3;;
add3 4;;
(fun x -> add x 5);;