Статическая типизация является лексической, это означает, что вся информация о типах может быть получена из чтения исходного кода без оценки каких-либо выражений или вычисления каких-либо вещей, условия здесь наиболее важны. Язык со статической типизацией спроектирован так, чтобы это могло произойти. Лучшим термином был бы «лексически типизированный», как, например, компилятор может доказать при чтении только одного источника, что ошибок типов не будет.
В случае с lisp это неловко отличается, потому что сам исходный код lisp не является статичным, lisp является гомо-иконическим, он использует данные в качестве кода и может в некоторой степени динамически редактировать свой собственный работающий источник.
Lisp был первым динамически типизированным языком, и, вероятно, по этой причине сам программный код больше не является лексическим в Lisp.
Редактировать: гораздо более веская причина, в случае статической типизации вам придется печатать списки. Вы можете иметь либо чрезвычайно сложные типы для каждого списка, которые учитывают все элементы, либо требовать, чтобы каждый элемент имел одинаковый тип, и ввести его в виде списка. Первый вариант будет производить ад со списками списков. Последний вариант требует, чтобы исходный код содержал только один и тот же тип для каждого элемента данных, это означает, что вы даже не можете создавать выражения, поскольку список в любом случае отличается от целого типа.
Так что я смею сказать, что это совершенно и совершенно невозможно реализовать.