Conclusions
In this section we've seen:
- how working on simple examples can drive API development; and
- how to handle unbounded recursion by delaying building recursive structures until they are needed.
Together these give us a very expressive parser library. We've demonstrated this by parsing JSON. At this stage we have a reasonably complete system and could stop. However we're going to use this case study to look at other aspect of software development, starting with performance benchmarking and optimization.