Clojure: installazione
Cos'è Clojure
Lisp è fra i languaggi piú vecchi. Ma rispetto ai suoi coetanei (Fortran, COBOL e BASIC), invece di sembrare antiquato, sembra sempre attuale.
Il problema con Lisp è che lo standard che lo governa (Common LISP) è una cosa mastodontica.
Di tanto in tanto (Arc, Scheme), c'è un tentativo di reinventare il linguaggio. Clojure ne è l'ultimo, e, secondo me, il migliore.
Clojure è un'implementazione di Lisp scritto in Java. Per questo motivo, Clojure risolve un problema che ha sempre afflitto i dialetti Lisp: le librerie. Essendo scritto in Java può sfruttare tutte le librerie standard (e non) del linguaggio sottostante.
Dipendenze e configurazione Java
Premesse:
- Cerco di standardizzare il piú possibile qui, installando tutte le librerie Java sotto /usr/share/java/,
- Uso il Java di Sun, non quello GNU.
1. Java
Controlla che hai Sun Java installato. Dovresti vedere quanto segue:
$ java -version java version "1.6.0_16" Java(TM) SE Runtime Environment (build 1.6.0_16-b01) Java HotSpot(TM) Server VM (build 14.2-b01, mixed mode)
Se vedi 'OpenJDK', stai usando GCJ. Consiglio di installare Sun Java.
2. libjline
Su Ubuntu basta:
$ sudo apt-get install libjline-java libjline-java-doc
Invece, se scarichi il pacchetto, il nome del file JAR conterrà la versione, es:
jline-0.9.94.jar
Per semplificarne l'uso, crea un symlink:
$ cd /usr/share/java $ sudo ln -s jline-0.9.94.jar jline.jar
Clojure
Clojure sta evolvendo rapidamente, quindi il consiglio è di scaricare l'ultima versione con git, e compilarlo:
$ cd /usr/share $ sudo git clone git://github.com/richhickey/clojure.git $ cd /usr/shar/clojure
Serve 'ant' per la compilazione.
Il parametro '--no-install-recommends' evita l'installazione di GCJ.
$ sudo apt-get --no-install-recommends install ant ant-optional $ sudo ant $ cd /usr/share/java $ sudo ln -s /usr/share/clojure/clojure.jar
Controllare
$ java -cp /usr/share/java/clojure.jar clojure.main -e '(str "Ciao Mondo!")' "Ciao Mondo!"
REPL
Il miglior modo per cominciare è con il REPL, cioè la riga di commando di Clojure.
Prime prove
$ java -cp /usr/share/java/clojure.jar:/usr/share/java/jline.jar jline.ConsoleRunner clojure.main user=> (defn ciao [] (str "Ciao Mondo!")) #'user/ciao user=> (ciao) "Ciao Mondo!" user=> [Ctrl+D]
Script d'avvio
Salva il seguente script come 'clj' in una directory che sta nel tuo PATH:
#!/bin/bash CLOJURE=/usr/share/java/clojure.jar JLINE=/usr/share/java/jline.jar for i in $CLOJURE $JLINE do if [ ! -e "$i" ]; then echo "File not found: $i" exit 1 fi done if [ -z "$1" ]; then java -cp $CLOJURE:$JLINE jline.ConsoleRunner clojure.main else CLASS=$1 shift java -cp $CLOJURE clojure.lang.Script $CLASS -- $* fi