Functional programming and input-output - Gordon, Andrew D. (Cambridge University Press, 1994)