Я хочу спросить, какие типы языков безопасности существуют на Clojure?
Я читал "Практические Clojure" у Люка Вандерхарта и Стюарта Сьерры несколько раз, но у меня все еще есть четкое впечатление, что Clojure (как и другие lisps) не очень серьезно проверяют проверку времени компиляции, Тип безопасности - это всего лишь одна (очень популярная) стратегия для выполнения проверки правильности семантики времени компиляции
Я задаю этот вопрос, потому что я боюсь ошибиться; какие шаблоны проектирования доступны на Clojure для проверки (во время компиляции, а не во время выполнения), что функция, которая ожидает строку, не вызывается с, скажем, целым числом?
Кроме того, я читал очень умных людей, таких как Пол Грэм, открыто выступающих за lisp, позволяющих реализовать все, начиная с языков более низкого уровня, поверх него (большинство скажет, что сам язык переопределяется поверх него), поэтому, если это утверждение будет истинным, тогда тривиальное вещество, такое как проверка типа, должно быть куском пирога. Итак, чувствуете ли вы, что существуют системы типов (или возможность реализовать такие системы типов) в Clojure или другие lisp, которые дают программисту возможность смещать проверку проверки от времени выполнения до времени компиляции или еще лучше, дизайн-время?