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