id : Int -> Int; id x = x; add : Int -> Int -> Int; add x y = x + y; double : Int -> Int; double n = n + n; apply : (Int -> Int -> Int) -> Int -> Int -> Int; apply f x = \y:Int. f x y; main : Int; main = apply add ((\x:Int. x + 1) 1) (double (id 3));