Programming with Higher Order Functions A. Maassen Recursion is the most important control structure in applicative languages, but the extensive use of recursive definitions tends to spoil readability and understandability of programs. Besides, many programmers don't like to use recursion. We suggest a choice of higher order functions which enable programmers to write concise and (almost) recursion-free functional programs. Our approach is heuristical: we developed our higher order functions by observing what kind of programming patterns appeared repeatedly when we wrote functional programs for a number of problems. Most of our higher order functions are tightly related to data structures. We suggest a choice of problem-oriented applicative data structures and discuss aspects of an efficient implementation. A major revision of this technical report appeared in Science of Computer Programming 18 (1992): 1 - 38.