code from http://www.letoverlambda.com/lol.lisp for book Let Over Lambda by Doug Hoyte