Summary
We began this chapter with GHC primitives such as Int# and figured out the effects of strictness and unpacking annotations (bangs and UNPACK-pragmas) in data type definitions. We noted that tuples are lazy and that Bool is an algebraic data type, but we also noted that arrays and vectors represent Bool intelligently as single bits internally.
Then we considered working with numeric, binary, and textual data. We witnessed the performance of the bytestring, text, and vector libraries, all of which get their speed from fusion optimizations, in contrast to linked lists, which have a huge overhead despite also being subject to fusion to some degree. However, linked lists give rise to simple difference lists and zippers. The builder patterns ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access