A really nice explanation of lisp semantics, using userland code! For example, you can define let in terms of let* and vice versa. https://www.plover.com/~mjd/misc/hbaker-archive/MetaCircular.html