Robert van Engelen wrote a complete Lisp interpreter in just 99 lines of C
it includes 21 built-in primitives garbage collection and an interactive REPL
to prove how small it is he ran it on a Sharp pocket computer from the 1990s
the source is free and every line is explained in an accompanying article