Я плохо знаком с clojure, и я попытался скомпилировать его вчера вечером, но я, могло казаться, не сделал это, и я понятия не имею. Я нахожусь на окнах и не знаю много о Java. Я просто хочу автономный файл, который я могу дать своим друзьям. (Я знаю, что им нужен Java), кто-либо может помочь?
Самый простой способ - использовать Leiningen . Вы можете сделать очень простой проект.clj для вашего проекта с: main, указывающим на пространство имен вашего основного файла, а затем вы можете выполнить 'lein uberjar' в командной строке, и он поместит все ваши зависимости в один исполняемый файл jar.
Я отмечу, что каждый файл, который необходимо скомпилировать, должен иметь пространство имен с включенным: gen-class. Например:
(ns whatever.main
(:gen-class))
Как насчет универсальной программы установки Clojure для Windows? Если только я неправильно понял ваш вопрос и вы не хотите, чтобы ваши файлы Clojure сами компилировались.
Если вы хотите компилировать свои собственные файлы Clojure, вы можете прочитать это объяснение на сайте Clojure.
для создания самостоятельной clojure-программы Опция uberjar от Leiningen делает именно это! Установите leiningen, а затем выполните:
lein uberjar
и вы получите один файл, который ваши друзья смогут использовать для запуска вашей программы.
Я скомпилировал свою инфраструктуру веб-служб с открытым исходным кодом до одной 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.)