added the on-lisp implementation using the do macro.