let f = \(x:N). x + 1 in f 3
:type let f = \(x:N). x + 1 in f
let f = (λx. x + 1) : N -> N in f 3
:type let f = (λx. x + 1) : N -> N in f
:type let f = λx. (x + 1 : N) in f
:type let f = λx. x + 1 : N in f
let g = λx:N, b:Bool.{? x*x if b, x+2 otherwise ?} in (g 3 true, g 6 false)
let q = \ (f : (N -> N) -> N) . f (\(x:N) . x*x) in q (\g. g 1 + g 2)
:type (\ x:Z, y:N . x * y)
let f = \(g : Z -> N -> Bool).[g 1 1, g 1 2, g (-1) 0] in f (\x, y:Z. x + 1 == y)
:type let f = \(g : Z -> N -> Bool).[g 1 1, g 1 2, g (-1) 0] in f (\x, y:Z. x + 1 == y)
let f : N -> N -> N = \x.\y.x+y in f 1 2
:parse \_.3
(\_.3) "hello"
