Haskell function design
In chapter 6 of ‘Programming in Haskell’ there is a five step process for function design:
- Define the type
- Enumerate the cases
- Define the simple cases
- Define the other cases
- Simplify and generalise
Define the type
Thinking about types is very helpfull it provides an understanding of the shape of our function and provides the information needed to think about the next step.
Enumerate the cases
For most types of argument there are a number of standard cases to consider. e.g. List have the empty and non-empty case. This step is about identifying for the combination of arguments what cases need to be considered.
Define the simple cases
From the cases identified in the previous step implemente the simple cases first.
Define the other cases
Implement the remaining cases.
Simplify and generalise
Once a function has been defined it often becomes clear that it can be generalised and simplified.