Semantic Lego
David Espinoza’s 1995 thesis, Semantic Lego is a highly interesting piece of work. It basically deals with the use of monads to write independent semantic modules which can be composed to specify and implement a particular language. It’s fascinating how far you can take the notion of representing everything as abstract data types.
For your convenience, one important paper which Espinoza cites is Wadler’s 1992 paper, The Essence of Functional Programming.