It is generally known that algorithms can be expressed us- ing simple function applications only. In this paper we will show that it is possible to make a systematic translation of algebraic data types and pattern based function definitions, like they are used in most non- strict functional programming languages, to function applications. The resulting functions closely resemble the original data type definitions. Furthermore, we will show that an efficient interpreter can be constructed for these functions. The interpreter has a very simple and elegant struc- ture because there is no need for special handling of data structures and pattern matching. Its performance turns out to be competitive in a com- parison with other interpreters like Hugs, Helium, GHCi and Amanda.