Метка для вопросов о языке программирования Clojure и / или его реализации для виртуальной машины Java. Рекомендуется также помечать более специфичными тегами: [clojureclr], [clojurescript].
Метка для вопросов о языке программирования Clojure и / или его реализации для виртуальной машины Java. Рекомендуется также помечать более специфичными тегами clojureclr и clojurescript .
Clojure - диалект Lisp для виртуальной машины Java (также портированный на CLR и JavaScript), позволяющий работать с классами и экосистемой Java.
- Как диалект Lisp , Clojure следует философии «код является данными» (гомоиконность) и имеет систему макросов для расширение синтаксиса языка.
- Использует строгие вычисления , но имеет средства для предоставления ленивых вычислений .
- Поощряет функциональный стиль: работа с высшим порядком , неизменяемыми значениями и персистентными структурами данных .
- Динамически типизирован , но поддерживает явные указания типов (подсказки типов). Они позволяют избегать рефлексии в сгенерированном коде и за счет этого повысить его производительность.
- Имеет в стаднартной разработке средства для многопоточного программирования . Программная транзакционная память позволяет избегать блокирования без явного управления блоками.
- Имеется полный доступ к платформе , в которой работает: на виртуальной машине Java может использоваться классы и интерфейсы Java , в том числе из библиотек.
- Хорошо подходит для интерактивной разработки с помощью REPL : может компилироваться прямо во время выполнения и подменять почти любую часть уже работающей программы.