Chapter 2. Choosing the Correct Data Structures
Perhaps the next most important topic in Haskell performance after lazy evaluation is data structures. I say the next most important because although data structures form a wider area than lazy evaluation, the unique performance aspects of lazy evaluation should deserve more attention. Still, structuring data efficiently is a must for performance, and in Haskell this often requires taking laziness into account, too.
Haskell gives the programmer lots of variety and clutches to structuring data, ranging from low-level primitives to ingenious, purely functional data structures. The traditional (re-)implementation costs associated with quick'n'dirty versus highly optimized solutions are really low in Haskell, and therefore there are even fewer reasons for complex premature optimizations in Haskell than in many other languages.
This chapter will help you to understand the performance semantics of Haskell values in general and...