fun : int * int -> int
    fst ((x : int), (y : int)) = snd (y, x)

and : int * int -> int
    snd ((x : int), (y : int)) = fst (x, y)

let main : int = fst (3, 4)