Мне очень нравится читать о разных языках программирования. В настоящее время я изучаю Scala, но это не значит, что меня не интересуют Groovy, Clojure, Python и многие другие. Все эти языки имеют уникальный внешний вид и некоторые характерные особенности. В случае clojure я не понимаю одно из этих дизайнерских решений. Насколько я знаю, Clojure уделяет большое внимание своей функциональной парадигме и в значительной степени заставляет вас использовать неизменяемые «переменные» везде, где это возможно. Итак, если половина ваших значений неизменна, почему язык динамически типизирован?
Сайт Clojure сообщает:
Прежде всего, Clojure является динамичным. Это означает, что программа Clojure - это не просто то, что вы компилируете и запускаете, а то, с чем вы можете взаимодействовать.
Ну, это звучит совершенно странно. Если программа скомпилирована, вы больше не можете ее изменить. Конечно, вы можете «взаимодействовать» с ним, для этого используются пользовательские интерфейсы, но веб-сайт определенно не означает аккуратный «динамический» графический интерфейс.
Как Clojure выигрывает от динамического набора текста
Я имею в виду особый случай Clojure, а не общие преимущества динамической типизации.
Как система динамического типа помогает улучшить функциональное программирование
Опять же, я знаю удовольствие не проливать "int a"; по всему исходному коду, но вывод типа может облегчить боль. Поэтому я просто хотел бы знать, как динамическая типизация поддерживает концепции функционального языка.