An introduction to data types - Cleaveland, J. Craig (Addison-Wesley, 1986)