The structure and components of the first programming languages were dictated by the architecture of computers. It was the human mind which had to bend to the peculiarities of the machine. When basic technical problems were solved a reverse current began to get stronger. There began a search for formalisms which would allow to program computers on a high and expressive level of abstraction. One effect of the search was the birth of those programming languages which we call declarative. From the beginning there have been two main streams in the field of declarative programming: functional programming and logic programming. A third stream tried to unify these paradigms and we call this stream functional logic programming. This work presents an approach to implement high level functional logic programming languages by translating them to purely functional ones. The translation fully preserves the laziness of the original declarations and makes use of the sharing provided by the target language. The work provides a proof of soundness for the core concepts as well as demonstrations for the practical relevance of the approach.