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