As software becomes more and more complex, it is more and more important to structure it well.
Conventional languages place conceptual limits on the way problems can be modularised.
Functional languages push those limits back. In this paper we show that two features of functional languages in particular, higher-order functions and lazy evaluation, can contribute greatly to modularity. There are three basic functions for inspecting lists. We want to emphasize this advantage by an implementation of Prolog s top level shell with our search operator. Why functional programming matters.