online - Manera típica de ejecutar programas de clojure.
clojure vs scala (7)
Como actualización, una forma sencilla de lidiar con los programas de clojure es usar leiningen
Si desea ejecutar pequeños scripts clojure, use lein-exec
Soy nuevo en Clojure y estoy realmente confundido acerca de cómo debería ejecutar los programas de Clojure.
Mi primera pregunta es si cada programa de Clojure es un paquete de Leiningen. Si quiero escribir, ¿comienzo por crear un nuevo proyecto de Leiningen? ¿Existe un programa para ejecutar Clojure similar a Python (es decir, python pyfile.py
)
Me doy cuenta de que esta podría ser una pregunta estúpida, pero he estado confundido acerca de esto por un tiempo y los pocos libros / tutoriales que he visto no parecen responder esta pregunta correctamente. Hasta ahora, he estado ejecutando el código de Clojure en REPL.
Cree un alias en su archivo .bashrc
, o equivalente:
alias clojure="java -jar path/to/clojure-xxxjar"
Luego puedes ejecutar clojure my-file.clj
en tu terminal.
Desde que encontraste a Leiningen directamente, estás en el camino correcto. No es una pregunta tonta porque responderla ayudará a otros a obtener mejores resultados de Google.
cada programa de clojure debe ser un proyecto leiningen separado, de modo que ejecute
lein new project-name
delein new project-name
para cada uno de ellos.el resultado de crear un proyecto Clojure es el mismo que un proyecto Java, un archivo JAR que se ejecuta con
java -jar myproject-standalone.jar
por ejemploleiningen puede crear un script de shell de envoltorio para usted que produzca un archivo .sh que simplemente llame a java -jar
Cuando ejecuto los programas de clojure en producción en el trabajo, simplemente los sacamos de git y luego llamamos a
lein run
en el directorio (en realidad Jenkins hace esto).
Para responder parte de la pregunta: "¿Existe un programa para ejecutar Clojure similar a Python?" Realmente puedes ejecutar un script de clojure como este (llamado hello.clj
):
(println "Hello!")
Me gusta esto:
clojure hello.clj
EDITAR: Lo siguiente debería funcionar en todos los sistemas:
java -jar <path-to-clojure-jar>/clojure.jar hello.clj
En mi sistema, el archivo clojure.jar se encuentra en /usr/share/clojure/clojure.jar. El comando de Linux para disparar clojure simplemente ejecuta un comando como el de arriba debajo de las cubiertas.
Probablemente, la forma más fácil sería usar lein-exec
para ejecutar los scripts de Clojure:
http://charsequence.blogspot.in/2012/04/scripting-clojure-with-leiningen-2.html
Una cosa que debe agregarse a la excelente respuesta de Arthur Ulfeldt es que lein crea un project.clj para usted, y su función principal (la función desde la que se inicia la ejecución del programa) se puede definir allí. Por defecto, Leiningen crea la función principal en un archivo llamado core.clj
Por ejemplo:
(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)
ahora mi proyecto se puede ejecutar usando:
lein run
y se ejecutará la función principal en music.core.
mi guión de bash clojure:
#!/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 "$@"
fi
guárdelos en $ HOME / bin / clojure, chmod + x $ HOME / bin / clojure, copie clojure.jar y la biblioteca de terceros en $ HOME / .clojure, puede ejecutar clojure your_program.clj
como python pyfile.py