(defun map (f (cons x xs))
(cons (f x) (map f xs)))
the type inference engine of CLazy correctly reconstructs the following type signature:
Still to come: virtual functions like Haskell's typeclasses. The plan is to define abstract functions like (+ a) :: (fun a a a) and collect requirements for functions in the form of "this function has type (fun a b) as long as an overload for (+ a) exists".