Метка для вопросов о языке программирования Clojure и / или его реализации для виртуальной машины Java. Рекомендуется также помечать более специфичными тегами: [clojureclr], [clojurescript].

Метка для вопросов о языке программирования Clojure и / или его реализации для виртуальной машины Java. Рекомендуется также помечать более специфичными тегами и .

Clojure - диалект Lisp для виртуальной машины Java (также портированный на CLR и JavaScript), позволяющий работать с классами и экосистемой Java.

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