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.

PDF (329 KB) BibTeX-Entry Online