Many functional programs —state machines, top-down and bottom-up parsers, evaluators, GUI initialization graphs, &c. — are conveniently expressed as groups of mutually recursive bindings. One therefore expects program generators, such as those written in MetaOCaml, to be able to build programs with mutual recursion.
Unfortunately, currently MetaOCaml can only build recursive groups whose size is hard-coded in the generating program. The general case requires something other than quotation, and seemingly weakens static guarantees on the resulting code. We describe the challenges and propose a new language construct for assuredly generating binding groups of arbitrary size~– illustrating with a collection of examples for mutual, n-ary, heterogeneous, value and polymorphic recursion.
Conference DayFri 28 SepDisplayed time zone: Guadalajara, Mexico City, Monterrey change
10:20 - 12:00
|Safely Mixing OCaml and Rust|
Stephen DolanUniversity of Cambridge
|Rust Distilled: An Expressive Tower of Languages|
Aaron WeissNortheastern University, Daniel PattersonNortheastern University, Amal AhmedNortheastern University, USALink to publication Pre-print
|Generating Mutually Recursive Definitions|
|Experience Report: Type-Safe Multi-Tier Programming with Standard ML Modules|
Martin ElsmanUniversity of Copenhagen, Denmark, Philip MunksgaardIntelligent Alpha AG, Switzerland, Ken Friis LarsenDIKU, University of CopenhagenLink to publication