Programming In Scheme by Mark Watson