  General program synthesis has become an important application area for
genetic programming (GP), and for artificial intelligence more generally. Code
Building Genetic Programming (CBGP) is a recently introduced GP method for
general program synthesis that leverages reflection and first class
specifications to support the evolution of programs that may use arbitrary data
types, polymorphism, and functions drawn from existing codebases. However,
neither a formal description nor a thorough benchmarking of CBGP have yet been
reported. In this work, we formalize the method of CBGP using algorithms from
type theory. Specially, we show that a functional programming language and a
Hindley-Milner type system can be used to evolve type-safe programs using the
process abstractly described in the original CBGP paper. Furthermore, we
perform a comprehensive analysis of the search performance of this functional
variant of CBGP compared to other contemporary GP program synthesis methods.
