Implementation and Application of Functional Languages - Hinze (Springer Berlin Heidelberg, 2013)