Strategic polymorphism requires just two combinators!
Ralf Laemmel, Joost Visser

TL;DR
This paper simplifies the implementation of functional strategies in programming by showing that just two combinators are sufficient for strategic polymorphism, supported by a generic operational model.
Contribution
It introduces a minimalistic approach to functional strategies using only two primitive combinators, applicable across different functional languages.
Findings
Captured strategic polymorphism with two combinators
Provided an operational reference model in Haskell
Reconstructed parts of the Strafunski library
Abstract
In previous work, we introduced the notion of functional strategies: first-class generic functions that can traverse terms of any type while mixing uniform and type-specific behaviour. Functional strategies transpose the notion of term rewriting strategies (with coverage of traversal) to the functional programming paradigm. Meanwhile, a number of Haskell-based models and combinator suites were proposed to support generic programming with functional strategies. In the present paper, we provide a compact and matured reconstruction of functional strategies. We capture strategic polymorphism by just two primitive combinators. This is done without commitment to a specific functional language. We analyse the design space for implementational models of functional strategies. For completeness, we also provide an operational reference model for implementing functional strategies (in Haskell).…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsLogic, programming, and type systems · Enzyme Catalysis and Immobilization · Chemical Synthesis and Analysis
