Functional Program Synthesis with Higher-Order Functions and Recursion Schemes
Matheus Campos Fernandes

TL;DR
This paper introduces two novel genetic programming algorithms, HOTGP and Origami, for synthesizing functional programs with higher-order functions and recursion schemes, achieving state-of-the-art success rates and competitiveness with large language models.
Contribution
The paper presents HOTGP and Origami, new GP algorithms that effectively synthesize typed, functional, and recursive programs, advancing the state of the art in program synthesis.
Findings
HOTGP is competitive with the state of the art.
Origami effectively handles loops and recursion, outperforming previous GP methods.
Origami achieves the highest success rates on benchmark problems.
Abstract
Program synthesis is the process of generating a computer program following a set of specifications, such as a set of input-output examples. It can be modeled as a search problem in which the search space is the set of all valid programs. As the search space is vast, brute force is usually not feasible, and search heuristics, such as genetic programming, also have difficulty navigating it without guidance. This text presents 2 novel GP algorithms that synthesize pure, typed, and functional programs: HOTGP and Origami. HOTGP uses strong types and a functional grammar, synthesizing Haskell code, with support for higher-order functions, -functions, and parametric polymorphism. Experimental results show that HOTGP is competitive with the state of the art. Additionally, Origami is an algorithm that tackles the challenge of effectively handling loops and recursion by exploring…
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
TopicsSoftware Testing and Debugging Techniques · Evolutionary Algorithms and Applications · Logic, programming, and type systems
