Подтвердить что ты не робот

Типичный способ запуска clojure программ

Я новичок в Clojure и очень смущен тем, как я должен запускать программы Clojure.

Мой первый вопрос заключается в том, является ли каждая программа Clojure пакетом Leiningen? Если я хочу написать, начинаю ли я с создания нового проекта Leiningen? Есть ли для запуска программы Clojure, похожие на Python (т.е. python pyfile.py)

Я понимаю, что это может быть глупый вопрос, но я немного смутился об этом, и несколько книг/учебников, которые я прошел, похоже, не отвечают на этот вопрос должным образом. До сих пор, я использовал код Clojure только в REPL.

4b9b3361

Ответ 1

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

  • каждая программа clojure должна быть отдельным проектом leiningen, поэтому вы запускаете lein new project-name для каждого из них.

  • результат построения проекта clojure совпадает с проектом Java, JAR файл, который запускается с java -jar myproject-standalone.jar например

  • leiningen может создать оболочку-оболочку script для вас, которая создает .sh файл, который просто вызывает java -jar

  • Когда я запускаю программы clojure, которые производятся на рабочем месте, мы просто проверяем их из git, а затем вызываем lein run в каталоге (на самом деле Дженкинс делает это).

Ответ 2

Одно замечание Артура Ульфельдта заключается в том, что lein создает для вас project.clj, и ваша основная функция (функция, в которой выполняется запуск программы). По умолчанию Leiningen создает основную функцию в файле с именем core.clj Например:

(defproject music "1.0.0-SNAPSHOT"
  :description "A workspace for my music experiments"
  :dependencies [
    [org.clojure/clojure "1.3.0"]
    [org.clojure/math.combinatorics "0.0.1"]
  ]
  :main music.core)

теперь мой проект можно запустить, используя:

lein run

и основная функция в music.core будет запущена.

Ответ 4

Чтобы ответить на часть вопроса: "Есть ли для запуска программы Clojure, похожие на Python?" Вы действительно можете запустить Clojure script как это (называемый hello.clj):

(println "Hello!")

вот так:

clojure hello.clj

РЕДАКТИРОВАТЬ: Во всех системах должно работать следующее:

java -jar <path-to-clojure-jar>/clojure.jar hello.clj

В моей системе файл clojure.jar находится в /usr/share/ clojure/clojure.jar. Команда linux для запуска Clojure просто запускает команду, подобную той, что находится над крышкой.

Ответ 5

my bash clojure script:

#!/bin/sh

export CLOJURE_EXT=$HOME/.clojure
export CLOJURE_OPTS="-Xmx1g -server"

LIBS=$(ls -1 $CLOJURE_EXT/* 2> /dev/null)
export CLASSPATH=.:$CLOJURE_EXT:$CLASSPATH:"$(echo "$LIBS" | tr \\n :)"

JAVA=${CLOJURE_JAVA:-java}
OPTS=${CLOJURE_OPTS:-}
MAIN=${CLOJURE_MAIN:-clojure.main}

breakchars="(){}[],^%$#@\"\";:''|\\"

if [ $# -eq 0 ]; then
    exec rlwrap --remember -c -b $breakchars \
        -f $HOME/.clj_completions \
        --history-filename=$HOME/.clj_history --histsize=1000000 \
        $JAVA $OPTS $MAIN -i $HOME/.clojure.clj --repl
else
    exec $JAVA $OPTS $MAIN "[email protected]"
fi

сохраните их в $HOME/bin/clojure, chmod + x $HOME/bin/clojure, скопируйте clojure.jar и стороннюю библиотеку в $HOME/.clojure, вы можете запустить clojure your_program.clj как python pyfile.py

Ответ 6

В качестве обновления простой способ работы с программами clojure состоит в использовании leiningen

Если вы хотите запускать небольшие сценарии clojure, используйте lein-exec

Ответ 7

Создайте псевдоним в вашем файле .bashrc или эквиваленте:

alias clojure="java -jar path/to/clojure-x.x.x.jar"

Затем вы можете запустить clojure my-file.clj в своем терминале.