A Label-Selective Lambda-Calculus with Optional Arguments and its Compilation Method

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 lambdacalculus, 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. Topics: language design, compilation methods, type theory.