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), Universidad Politecnica de Madrid, pp. 2-18, 2010

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 into 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 t arget 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