(= f (lambda [x y] (cons x y)))

(assert (eq closure-t (type-of f)))
(assert (eq closure-t (type-of (f null))))
(assert (eq (f null (cons null null))
            (cons null (cons null null))))

(println f)
(println (f null))
(println (f null (cons null null)))

(= g (lambda [x] (lambda [y] (cons x y))))

(assert (eq closure-t (type-of g)))
(assert (eq closure-t (type-of (g null))))
(assert (eq ((g null) (cons null null))
            (cons null (cons null null))))

(println g)
(println (g null))
(println ((g null) (cons null null)))

(= h (lambda [x]
       (lambda [x]
         x)))

(assert (eq ((h 1) 2)
            2))