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