Transforming Functional Logic Programs into Monadic Functional Programs

by Bernd Braßel, Sebastian Fischer, Michael Hanus, Fabian Reck

Proc. of the 19th International Workshop on Functional and (Constraint) Logic Programming (WFLP 2010), Springer LNCS 6559, pp. 30-47, 2011
© Springer-Verlag

We present a high-level transformation scheme to translate lazy functional logic programs into pure Haskell programs. This transformation is based on a recent proposal to efficiently implement lazy non-deterministic computations in Haskell in a monadic style. We build on this work and define a systematic method to transform lazy functional logic programs into monadic programs with explicit sharing. This results in a transformation scheme which produces high-level and flexible target code. For instance, the target code is parametric w.r.t. the concrete evaluation monad. Thus, different monad instances could, for example, define different search strategies (e.g., depth-first, breadth-first, parallel). We formally describe the basic compilation scheme and some useful extensions.

Preprint (PDF) BibTeX-Entry Online