Jak dynamiczny i skompilowany jest Lisp?

Nie rozumiem, jak Lisp może być kompilowany i dynamiczny. Aby język mógł manipulować, modyfikować i generować kod, czy nie jest to wymóg interpretacji? Czy jest możliwe, aby język został całkowicie skompilowany i nadal był dynamiczny? Czy coś mi brakuje? Co robi Lisp, aby umożliwić kompilację i dynamikę?