Может кто-нибудь объяснить, пожалуйста, основные различия между Scala, Groovy и Clojure. Я знаю, что каждый из этих компиляторов запускается на JVM, но я хотел бы провести простое сравнение между ними.
Полагаю, это странный вопрос для огромного большинства программистов, ежедневно работающих с Java. Я не. Я знаю Java-язык, потому что я работал над проектами Java, но не Java-the-world. Я никогда не делал веб-приложение с нуля на Java. Если мне нужно сделать
...Какой лучший способ сделать GUI в Clojure ?
Есть ли пример какой-нибудь функциональной оболочки Swing или SWT ? Или какая-то интеграция с декларативным описанием графического интерфейса пользователя JavaFX , который можно легко обернуть в s-выражений с помощью некоторой макрологии?
Есть
...Может кто-нибудь объяснить разницу между use
и require
, как при непосредственном использовании, так и :use
и :require
в макросе ns
?
Как лучше всего проверить, содержит ли список заданное значение в Clojure?
В частности, поведение contains?
в настоящее время сбивает меня с толку:
(contains? '(100 101 102) 101) => false
Я, очевидно, мог бы написать простую функцию для обхода списка и
...Я экспериментировал с Lisp (на самом деле Scheme) и обнаружил, что это очень красивый язык, о котором мне интересно узнать больше. Тем не менее, похоже, что Lisp никогда не используется в серьезных проектах, и я не видел его в списке
...Мне нужна помощь в понимании некоторых моментов из Пола Грэма, что отличало Лисп от .
Новая концепция переменных. В Лиспе все переменные фактически являются указателями. Значения - это то, что имеет типы, а не переменные, а присвоение или связывание переменных
Я знаю, что программисты на Лиспе и Схеме обычно говорят, что следует избегать eval
, если в этом нет особой необходимости. Я видел одну и ту же рекомендацию для нескольких языков программирования, но пока не видел списка четких аргументов против
Я читал, что векторы не являются последовательностями, а списки. Я не уверен, в чем причина использования одного над другим. Кажется, что векторы используются чаще всего, но есть ли причина для этого?
У меня есть мимолетные знания о других Лиспах (особенно Схеме) с давних времен. Недавно я читал о Clojure . Я вижу, что у этого есть и "символы" и "ключевые слова". Символы, с которыми я знаком, но не с ключевыми словами.
...Я понимаю концептуальную разницу между reduce
и apply
:
(reduce + (list 1 2 3 4 5))
; translates to: (+ (+ (+ (+ 1 2) 3) 4) 5)
(apply + (list 1 2 3 4 5))
; translates to:
... Как прокомментировать несколько строк в Clojure?
В Clojure я хочу объединить два списка, чтобы получить список пар,
> (zip '(1 2 3) '(4 5 6))
((1 4) (2 5) (3 6))
В Haskell или Ruby функция называется zip . Реализовать это не сложно, но я хотел
...Я прихожу с этим:
(defn string->integer [str & [base]] (Integer/parseInt str (if (nil? base) 10 base))) (string->integer "10") (string->integer "FF" 16)
Но это должен быть лучший способ сделать это.
Я хочу использовать leiningen для создания и развития моего проекта clojure. Есть ли способ изменить проект. clj, чтобы сказать это, чтобы выбрать некоторые банки из локальных каталогов?
У меня есть несколько фирменных jar-файлов, которые нельзя загрузить в общедоступные репозитории.
Кроме
...Я новичок в Clojure и использую Compojure для написания базового веб-приложения. Я бью стену с синтаксисом Compojure defroutes
, хотя, и я думаю, что мне нужно понять как «как» и «почему» за всем этим.
Похоже, что приложение в стиле Ring
...Существует ли примерное приложение Clojure среднего размера, которое можно использовать в качестве примера «передового опыта», и хороший способ увидеть, как будет выглядеть такое приложение с точки зрения кода и организации кода? Веб-приложение было бы особенно интересно для меня, но самое
...Какие распространенные ошибки допускают разработчики Clojure и как мы можем их избежать?
Например; новички в Clojure считают, что функция contains?
работает так же, как и java.util.Collection#contains
. Однако contains?
будет работать аналогично только при использовании с индексированными коллекциями, такими как
Я знаю, что cons
возвращает seq, а conj
возвращает коллекцию. Я также знаю, что conj
«добавляет» элемент в оптимальный конец коллекции, а cons
всегда «добавляет» этот элемент вперед. Этот пример иллюстрирует обе эти точки:
user=> (conj [1 2 3] 4)
... В моем приложении мне нужно конвертировать ключевое слово clojure, например. : var_name в строку "var_name". Есть идеи, как это можно сделать?