Clojure 1.6

Clojure-это диалект Лиспа, который привлек последователей среди программистов, которые хотят принять функциональный подход. Версия 1.6 содержит новые и улучшенные функции, улучшения производительности, печати, строк документации и сообщений об ошибках, а также исправления ошибок.

Первоначально разработанный Ричом Хики для JVM, Clojure с тех пор был перенесен в CLR (clojure-clr), и еще одна вилка привела к компилятору Clojure для JavaScript, ClojureScript.

Согласно описанию на clojure.org:

Он разработан как язык общего назначения, сочетающий доступность и интерактивную разработку языка сценариев с эффективной и надежной инфраструктурой для многопоточного программирования. [Он] разделяет с Lisp философию кода как данных и мощную макросистему, является преимущественно функциональным языком программирования и имеет богатый набор неизменяемых, постоянных структур данных. Когда требуется изменяемое состояние, Clojure предлагает программную систему транзакционной памяти и систему реактивных агентов, которые обеспечивают чистые, правильные многопоточные проекты. 

Clojure

Новый выпуск предоставляет Java API, состоящий из:

  • clojure.java.api.Clojure
  • clojure.lang.IFn

Это обеспечивает минимальный интерфейс для начальной загрузки Clojure доступа с других языков JVM. Он делает это, предоставляя: возможность использовать пространства имен Clojure для поиска произвольного var, возвращая var clojure.lang.Интерфейс IFn и метод чтения для чтения данных с помощью edn-считывателя Clojure. IFN предоставляют полный доступ к API Clojure. Вы также можете получить доступ к любой другой библиотеке, написанной в Clojure, после добавления ее исходной или скомпилированной формы в путь к классу.

Он предоставляет новые алгоритмы хеширования для примитивов и коллекций, доступные через IHashEq/hasheq (в Java) или функцию clojure.core/hash (в Clojure). В целом, эти изменения должны быть прозрачными для пользователей, за исключением того, что хэш-коды, используемые внутри хэшированных коллекций, таких как карты и наборы, будут иметь лучшие свойства.

Он также вводит “некоторые” операции, условные функции, которые дополняют true и false, когда вы хотите проверить “не нильность”.Были добавлены три функции: 

  • некоторые? – то же самое, что (не (ноль? x))
  • если-некоторые – как если-пусть, но проверяет (некоторые? тест) вместо теста
  • когда-некоторые – любят, когда-пусть, но проверяет (некоторые? тест) вместо теста

Обновление для отображения деструктурирования с помощью :keys и :syms mot позволяет им сопоставлять ключи пространства имен и привязываться к локальной переменной на основе ее имени.

Обновление Clojure приветствуется, но введение Java 8 и поддержка lambdas заставили одного или двух программистов задаться вопросом, является ли Clojure хорошим вариантом. Конечно, это так, если вы ищете очень динамичный функциональный язык, Clojure по-прежнему является хорошим выбором, но если раньше вы были просто немного раздражены поддержкой Java той или иной функции, то, возможно, пришло время придерживаться Java 8.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *