Functional Programming Languages by Kevin Roebuck