Effective ATS:
Functional Programming with Combinators