Functional Specification of Imperative Programs: An Alternative Point of View of Functional Languages Markus Mohnen In this paper we will show how to embed functional concepts in an imperative host language in a \emph{natural way}. This is achieved by interpreting functional programs as \emph{specifications} of imperative programs. We will introduce a refined \emph{notion of laziness}, which allows us to interpret lazy computations as special constructors, which encapsulate the suspended computation. Even higher-order concepts can be represented efficiently, if we restrict the possibility to use partial applications. Essentially, we disallow the use of sequences of partial applications as hidden data structures. By considering a setting in which the unit of translation is a \emph{module}, this approach is the key to an \emph{integration} of the functional programming paradigm and the imperative programming paradigm on a \emph{module level}. Functional components of the resulting \emph{hybrid} module architectures \emph{may use} and \emph{may be used by} imperative components without need for special \emph{inter-language interfaces}. Beside the `best of both worlds', this concept offers the possibility to \emph{migrate} `module by module' from purely imperative systems to hybrid systems and to do \emph{rapid prototyping} using functional modules. Experimental results with a prototype version of a translator will show that we can compete with traditional functional languages like \texttt{Haskell}.