Безопасность типов в Clojure

Я хочу спросить, какие конструкции языков безопасности типов есть на Clojure?

Я Я уже несколько раз читал «Practical Clojure» Люка Вандерхарта и Стюарта Сьерры, но у меня все еще сложилось четкое впечатление, что Clojure (как и другие шепелявые) не очень серьезно относятся к проверке валидации во время компиляции. Безопасность типов - всего лишь одна (очень популярная) стратегия проверки правильности семантики во время компиляции

. Я задаю этот вопрос, потому что очень хочу доказать, что ошибаюсь; Какие шаблоны проектирования доступны в clojure для проверки (во время компиляции, а не во время выполнения), что функция, ожидающая строку, не вызывается, скажем, со списком целых чисел?

Кроме того, Я читал, что очень умные люди, такие как Пол Грэм, открыто выступают за то, чтобы лиспа позволяла реализовать все, начиная с языков нижнего уровня поверх него (большинство сказали бы, что сам язык переопределяется поверх него), так что если это утверждение будет правда, тогда такие тривиальные вещи, как проверка типов, должны быть проще простого. Считаете ли вы, что существуют системы типов (или возможность реализовать такие системы типов) в clojure или других лиспах, которые дают программисту возможность смещать проверку валидации от времени выполнения до времени компиляции или даже лучше , время разработки?

18
задан James McMahon 23 November 2016 в 03:25
поделиться