7
7
-------
8
8
9
9
This book is written as a handbook for the intrepid Haskell developer. It
10
- attempts to make clear aspects of the GHC-based Haskell so that performance
10
+ attempts to make clear aspects of GHC-based Haskell so that performance
11
11
optimizations and recommendations are actionable, rather than mysterious
12
12
invocations whispered around the internet.
13
13
@@ -17,7 +17,7 @@ Intended Audience
17
17
The Haskell Optimization Handbook is intended for developers using Haskell in
18
18
their day to day life for money or pleasure. It assumes the audience is
19
19
proficient with pure functional programming concepts, such as recursion, purity,
20
- higher-ordered functions functors, applicative functors, monads et cetera., and
20
+ higher-ordered functions, functors, applicative functors, monads et cetera., and
21
21
the basics of the Haskell ecosystem, such as using cabal or stack to compile and
22
22
run a project.
23
23
@@ -65,18 +65,20 @@ handbook. Thus, the book is not meant to be read in a linear order. Instead, one
65
65
should pick and choose which chapter to read next based on their needs because
66
66
*the book assumes you have a problem that needs solving *.
67
67
68
- There are two general sections; both are ordered from the least time consuming
69
- to most time consuming topics. The first section, Part 1, aids the developer in
70
- identifying performance issues in their own code. Part 1 is primarily concerned
71
- with measurement, observation, repeatability and testing, but also includes
72
- methods of *direct observation * such as inspecting and understanding the
73
- ``Core `` and ``Stg `` languages.
68
+ There are two parts: Part 1, focuses on measurement, profiling and observation
69
+ of Haskell programs. This part is ordered from the bottom-up; it begins with
70
+ tools and probes that are language agnostic and close to the machine, such as
71
+ :ref: `Perf <Perf Chapter >` and :ref: `Cachegrind <Cachegrind Chapter >`, then
72
+ proceeds through each `intermediate representation
73
+ <https://en.wikipedia.org/wiki/Intermediate_representation#:~:text=An%20intermediate%20representation%20(IR)%20is,such%20as%20optimization%20and%20translation.> `_
74
+ (IR) describing the tools, probes, and information available at each IR.
74
75
75
- The second section, Part 2, aids the developer in optimizing their code. It is
76
+ Part 2, provides an ordered sequence of techniques to optimize code. It is
76
77
ordered from the easiest methods, such as choosing the right libraries; to the
77
- hardest methods, such as exploiting ``backpack `` for fine-grained
78
- :term: `Unboxed ` data types or exploiting :term: `Levity Polymorphism ` to control
79
- the runtime representation of a data type.
78
+ hardest and more invasive methods, such as exploiting :ref: `Backpack <Backpack
79
+ Chapter>` for fine-grained :term: `Unboxed ` data types or exploiting
80
+ :term: `Levity Polymorphism ` to control the runtime representation of a data
81
+ type.
80
82
81
83
82
84
Goals
@@ -111,6 +113,10 @@ HOH does not have:
111
113
a given platform.
112
114
#. Descriptions, analyses and explanations of functional algorithms or data
113
115
structures. Content will instead be "Try unordered-containers if you have
114
- foo, bar, baz", rather than "This is what a bankers queue or HAMT is ...".
116
+ this or that set of constraints", rather than "This is what a banker's queue
117
+ [# ]_ or `HAMT <https://en.wikipedia.org/wiki/Hash_array_mapped_trie >`_ is
118
+ ...".
115
119
#. A monad or monad transformer tutorial. This is assumed knowledge in the
116
120
audience.
121
+
122
+ .. [# ] See :cite:t: `okasaki `, page 23.
0 commit comments