Abstract. The use of labels for argument passing has proved to be a useful extension to programming languages, particularly when we introduce optional arguments.
We propose here an adaptation of such a system, as can be found in Common LISP, to strongly-typed curried functional languages. For this we extend ML-style polymorphic typing to labeled arguments, out-of-order application, and optional arguments. We also provide a compilation method towards polymorphic lambda-calculus, which is proved syntactically sound for free reduction, and semantically correct for call-by-name semantics.
We implemented it, and showed the overhead caused by using this extension to be negligible when out-of-order parameter passing is used, and null when it is not.