Скомпилировать Clojure?

Я плохо знаком с clojure, и я попытался скомпилировать его вчера вечером, но я, могло казаться, не сделал это, и я понятия не имею. Я нахожусь на окнах и не знаю много о Java. Я просто хочу автономный файл, который я могу дать своим друзьям. (Я знаю, что им нужен Java), кто-либо может помочь?

5
задан GummyBEARZ 11 February 2010 в 16:42
поделиться

4 ответа

Самый простой способ - использовать Leiningen . Вы можете сделать очень простой проект.clj для вашего проекта с: main, указывающим на пространство имен вашего основного файла, а затем вы можете выполнить 'lein uberjar' в командной строке, и он поместит все ваши зависимости в один исполняемый файл jar.

Я отмечу, что каждый файл, который необходимо скомпилировать, должен иметь пространство имен с включенным: gen-class. Например:

(ns whatever.main
  (:gen-class))
9
ответ дан 13 December 2019 в 05:34
поделиться

Как насчет универсальной программы установки Clojure для Windows? Если только я неправильно понял ваш вопрос и вы не хотите, чтобы ваши файлы Clojure сами компилировались.

Если вы хотите компилировать свои собственные файлы Clojure, вы можете прочитать это объяснение на сайте Clojure.

2
ответ дан 13 December 2019 в 05:34
поделиться

для создания самостоятельной clojure-программы Опция uberjar от Leiningen делает именно это! Установите leiningen, а затем выполните:

lein uberjar

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

1
ответ дан 13 December 2019 в 05:34
поделиться

Я скомпилировал свою инфраструктуру веб-служб с открытым исходным кодом до одной DLL. Хотя я полностью использовал другой подход, я создал универсальные IHtmlHandler для конечных точек JSON и XML (и универсальную конфигурацию WCF для конечных точек SOAP), которые могут обрабатывать каждый запрос. Таким образом, моя конфигурация является простой однострочной для всех моих веб-служб, сопоставляющих конечную точку с моим обработчиком, который находится в файле .config хоста приложения (то есть ASP.NET Web.config или Console App.config), где он должен быть.

-121--3186023-

Предупреждение: код ниже не должен восприниматься всерьез и предоставляется только в развлекательных целях!

Вы можете «имитировать» продолжение с ранним возвращением, как это:

Enumerable.Range(1, 20)
          .ForEach(n =>
                {
                    if (n == 10) return;
                    Console.WriteLine("This is not 10: {0}", n);
                });

То есть, я думаю, что побочные эффекты в лямбде являются признаком того, что вы делаете это неправильно. Вместо этого используйте правильный foreach. Или что-то вроде TakeWhile, как уже любезно продемонстрировал Эрик.

-121--3460695-

Если вы являетесь пользователем gradle, вас может заинтересовать Clojuresque (источник в bitbucket ). Он обеспечивает похожую на leiningen задачу ueberjar, которая упаковывает все необходимые зависимости в одну банку. Он обеспечивает простоту компиляции, а также простоту развертывания в Clojars. (Хотя в настоящее время это не работает в Windows.)

0
ответ дан 13 December 2019 в 05:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: