Programming language theory and its implementation : applicative and imperative paradigms. - Gordon, Michael J. C.