Статьи

Растущая экосистема Clojure — библиотека структур данных и инструмент для моделирования


Поскольку JVM-языки продолжают расти в популярности и внедрении, некоторые размышляют о следующем «
наследнике Java ». Многие считают, что мир программирования превратился в стадию, где платформа важнее языка. Тем не менее, есть несколько языков, таких как Groovy и Scala, которые более популярны, чем другие языки JVM. Могу также поспорить, что Clojure собирается присоединиться к эшелону популярности Groovy / Scala в ближайшие несколько лет. 
Алекс Миллер и (дядя)
Боб Мартиндва выдающихся разработчика, которые сочли Clojure очень полезным. Количество инструментов и каркасов для Clojure также быстро росло. Я нашел два интересных проекта Clojure, которые были размещены на GitHub всего за последние несколько месяцев. Здесь вы найдете описание каждого из них.

CLJ-DS

Карл Круков любит Clojure, и ему особенно нравится использовать
структуры данных . Хотя Clojure распространяется как .jar, структуры лучше всего работают внутри Clojure. Поскольку многим клиентам требуется, чтобы он использовал Java, Krukow создал библиотеку, способную охватить некоторые преимущества использования структур данных Clojure в Clojure.

clj-ds не зависит от среды выполнения Clojure и не запускает какой-либо процесс начальной загрузки Clojure, поэтому вызов определенных методов в PersistentHashMap, которые требуют загрузки всей среды выполнения Clojure, не вызовет задержек для пользователя Java. clj-ds также будет поддерживать дженерики (у Clojure их нет) для библиотеки структуры данных Java.

Структуры данных Clojure в настоящее время реализованы в Java, но язык движется к полной реализации в самом Clojure. Это может сделать структуры данных еще более неудобными для использования в среде Java. Таким образом, проект clj-ds будет поддерживать Java-версии кода.  

Другие языки JVM, такие как JRuby, Groovy, Jython, Scala или Erjang, могут извлечь выгоду из реализации Krukow. 

                          

Аттикус

atticus.mock — это альтернативный подход к моделированию, в котором проверяемая функция может быть реализована как встроенная функция для выполнения любой проверки или вычисления возвращаемого значения. В настоящее время в проекте есть два макроса для обёртывания тела макета функции. Один будет проверять, что функция вызывается один раз, а другой будет проверять, что функция вызывается заданное количество раз.

Макрос Однажды

;; define test, that should be called just once
(deftest mock-test
(atticus.mock/expects
[(f [arg]
(atticus.mock/once
(is (= arg 1) "Check argument")
arg))]
(is (= 1 (f 1)) "Call mocked function"))

Аттикус включает в себя все средства для насмешек Clojure. Автор проекта Хьюго Дункан (Hugo Duncan) говорит, что большинство инструментов для имитации в Clojure отражают библиотеки для имитации Java и не используют больше динамических возможностей Clojure. Atticus следует соглашению о реализации mocking, связывая var функции с новой функцией на время теста. У Atticus также появилась новая поддержка протоколов-насмешек.

Вы можете найти сотни других проектов , связанных с Clojure на
GitHub , таких как
Leiningen ,
Compojure , а затем есть
jclouds , который хочет быть
библиотека Clojure облако .