Constructive foundations for functional languages - Turner, Raymond (McGraw-Hill, 1991)