Поиск…


замечания

введите описание изображения здесь

Clojure - динамически типизированный язык программирования общего назначения с синтаксисом Lisp.

Его функции поддерживают функциональный стиль программирования с первоклассными функциями и неизменяемыми значениями по умолчанию. Использование переназначаемых переменных не так просто в Clojure, как и во многих основных языках, поскольку переменные должны быть созданы и обновлены как объекты контейнера. Это поощряет использование чистых ценностей, которые останутся такими, какими они были в тот момент, когда их видели в последний раз. Это обычно делает код гораздо более предсказуемым, проверяемым и совместимым с параллелизмом. Это также работает для коллекций, поскольку встроенные структуры данных Clojure являются постоянными.

Для производительности Clojure поддерживает тип-намек, чтобы устранить ненужное отражение там, где это возможно. Кроме того, группы изменений в постоянных коллекциях могут быть сделаны для переходных версий, что уменьшает количество задействованных объектов. Это не обязательно в большинстве случаев, поскольку постоянные коллекции быстро копируются, поскольку они делят большую часть своих данных. Их гарантии эффективности находятся недалеко от их изменчивых коллег.

Среди других возможностей Clojure также имеет:

  • программная транзакционная память (STM)
  • несколько примитивов параллелизма, не включающих ручную блокировку (атом, агент)
  • сменные преобразователи последовательности (преобразователи),
  • функциональные средства для обработки дерева (молнии)

Благодаря простому синтаксису и высокой расширяемости (с помощью макросов, реализации основных интерфейсов и отражения) в Clojure с библиотеками могут быть добавлены некоторые известные функции языка. Например, core.typed предоставляет статический тип checker, core.async предоставляет простые механизмы параллелизма на основе каналов, core.logic приносит логическое программирование.

Разработанный как размещенный язык, он может взаимодействовать с платформой, на которой он работает. В то время как основной целью является JVM и вся экосистема за Java, альтернативные реализации могут выполняться и в других средах, таких как ClojureCLR, работающие на среде Common Language Runtime или ClojureScript, работающие на время работы JavaScript (включая веб-браузеры). Хотя в альтернативных реализациях может отсутствовать некоторые функции из версии JVM, они по-прежнему считаются одним семейством языков.

Версии

Версия Журнал изменений Дата выхода
1,8 Последний журнал изменений 2016-01-19
1,7 Журнал изменений 1.7 2015-06-30
1,6 Журнал изменений 1.6 2014-03-25
1.5.1 Журнал изменений 1.5.1 2013-03-10
1.4 Журнал изменений 1.4 2012-04-15
1,3 Журнал изменений 1.3 2011-09-23
1.2.1 2011-03-25
1.2 2010-08-19
1,1 2010-01-04
1,0 2009-05-04

Установка и настройка

Вариант 1: Leiningen

Требуется JDK 6 или новее.

Самый простой способ начать работу с Clojure - загрузить и установить Leiningen, фактический стандартный инструмент для управления проектами Clojure, а затем запустить lein repl чтобы открыть REPL .

Linux

curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > ~/bin/lein
export PATH=$PATH:~/bin
chmod 755 ~/bin/lein

OS X

Следуйте инструкциям по Linux выше или установите с помощью менеджеров пакетов macOS.

Установить с помощью Homebrew

brew install leiningen

Установить с помощью MacPorts

Сначала установите Clojure

sudo port -R install clojure

Установите Leiningen , инструмент сборки для Clojure

sudo port -R install leiningen
lein self-install

Windows

См. Официальную документацию .

Вариант 2: официальное распространение

Требуется JRE 6 или новее.

Релизы Clojure публикуются как простые файлы JAR для запуска на JVM. Это то, что обычно происходит внутри инструментов сборки Clojure.

  1. Перейдите на сайт http://clojure.org и загрузите последний архив Clojure

  2. Извлеките загруженный ZIP- файл в каталог по вашему выбору

  3. Запустите java -cp clojure-1.8.0.jar clojure.main в этом каталоге

    Возможно, вам придется подставить clojure-1.8.0.jar в этой команде для имени загруженного вами файла JAR.

    Для лучшего использования REPL в командной строке (например, с помощью ваших предыдущих команд) вы можете установить rlwrap : rlwrap java -cp clojure-1.8.0.jar clojure.main

Вариант 3: загрузка

Требуется JDK 7 или новее.

Boot - многоцелевой инструмент построения Clojure. Понимание этого требует некоторых знаний о Clojure, поэтому, возможно, это не лучший вариант для новичков. См. Веб-сайт (нажмите « Начало работы» ) для инструкций по установке.

Как только он будет установлен, и в вашем PATH , вы можете запустить boot repl где угодно, чтобы запустить Clojure REPL.

"Привет, мир!" в REPL

Сообщество Clojure уделяет большое внимание интерактивному развитию, поэтому довольно много взаимодействия с Clojure происходит в REPL (read-eval-print-loop) . Когда вы вводите в него выражение, Clojure читает его, оценивает и распечатывает результат оценки, все в цикле .

Теперь вы можете запустить Clojure REPL. Если вы не знаете, как это сделать, следуйте разделу « Установка и настройка » в этом разделе. После того, как вы его запустили, введите в него следующее:

(println "Hello, world!")

Затем нажмите Enter . Это должно распечатать Hello, world! , за которым следует возвращаемое значение этого выражения, nil .

Если вы хотите запустить некоторый clojure сразу, попробуйте выполнить онлайн REPL. Например, http://www.tryclj.com/ .

Создать новое приложение

Следуя приведенным выше инструкциям и установкой Leiningen, запустите новый проект, запустив:

lein new <project-name>

Это установит проект Clojure с шаблоном Leiningen по умолчанию в папке <project-name> . Для Leiningen существует несколько шаблонов, которые влияют на структуру проекта. Чаще всего используется шаблон «приложение», который добавляет основную функцию и подготавливает проект для упаковки в jar-файл (основная функция которого является точкой входа приложения). Это может быть достигнуто с помощью:

lein new app <project-name> 

Предполагая, что вы использовали шаблон приложения для создания нового приложения, вы можете проверить, что все было настроено правильно, введя созданный каталог и запустив приложение, используя:

lein run

Если вы видите Hello, World! на консоли вы все готовы и готовы приступить к созданию своего приложения.

Вы можете упаковать это простое приложение в два jar-файла со следующей командой:

lein uberjar

"Привет, мир!" используя загрузку

Примечание. Перед тем, как попробовать этот пример, вам нужно установить Boot. См. Раздел « Установка и настройка », если вы еще не установили его.

Boot позволяет создавать исполняемые файлы Clojure с помощью строки shebang (#!). Поместите следующий текст в файл по вашему выбору (в этом примере предполагается, что он находится в «текущем рабочем каталоге» и называется hello.clj ).

#!/usr/bin/env boot

(defn -main [& args]
  (println "Hello, world!"))

Затем пометьте его как исполняемый файл (если применимо, обычно, запустив chmod +x hello.clj ).
... и запустите его ( ./hello.clj ).

Программа должна выводить «Привет, мир!». и закончить.

Создайте новое приложение (с загрузкой)

boot -d seancorfield/boot-new new -t app -n <appname>

Эта команда сообщит boot, чтобы захватить задачу boot-new с https://github.com/seancorfield/boot-new и выполнить задачу с шаблоном app (см. Ссылку для других шаблонов). Задача создаст новый каталог с именем <appname> с типичной структурой приложения Clojure. Для получения дополнительной информации см. Созданный README.

Запуск приложения: boot run . Другие команды указаны в build.boot и описаны в README.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow