Part 2. Functional design and combinator libraries

 

We said in chapter 1 that FP is a radical premise that affects how we write and organize programs at every level. In part 1, we covered the fundamentals of FP and saw how the commitment to using only pure functions affects the basic building blocks of programs: loops, data structures, exceptions, and so on. In part 2, we’ll see how the assumptions of FP affect library design.

We’ll create three useful libraries in part 2─one for parallel and asynchronous computation, another for testing programs, and a third for parsing text. There won’t be much in the way of new syntax or language features, but we’ll make heavy use of the material already covered. Our primary goal isn’t teaching you about parallelism, testing, and parsing; instead, it is helping you develop skill in designing functional libraries, even for domains that look nothing like the ones here.