Hello World, em Clojure, novamente.

Já escrevi um pouco sobre clojure aqui, sobre o básico de programação funcional e o básico de clojure, mas resolvi pegar do começo agora, do hello world.

Para preparar o ambiente para o clojure basta pegar as bibliotecas do clojure e do clojure-contrib:

wget http://clojure-contrib.googlecode.com/files/clojure-contrib-1.1.0.zip
wget http://clojure.googlecode.com/files/clojure-1.1.0.zip

Descompacte e pegue os jars clojure.jar e clojure-contrib.jar e coloques numa mesma pasta “libs”, agora crie um lançador simples para o clojure, com o nome de “clj” (com permissão de execução, com o seguinte conteúdo:

#!/bin/sh
java -cp .:libs/clojure.jar:libs/clojure-contrib.jar clojure.main $1

Agora basta chamar o “clj” para ter o REPL, ou passar como parâmetro o arquivo clojure à ser executado.

Agora como primeiro programa, o clássico “Hello world”. Basta criar um arquivo hello.clj com o seguinte conteúdo:

  (println "Hello World")
(defn fac "Nice factorial impl" [x] ( reduce * (range 2 (inc x))))
(println "Factorial of 4 is" (fac 4))
(def myJson "{\"hello\":\"World\"}")
(use 'clojure.contrib.json.read)
(def obj (read-json myJson))
(println (get obj "hello"))

No exemplo, linha a linha, imprimi o Hello World, criei uma função para calculo de fatorial e imprimi o fatorial de 4, criei uma string no formato do json, importei uma biblioteca de json do clojure-contrib, fiz o parse do json e exebi sua propriedade. Basta executar:

$ ./clj hello.clj  

Simples assim.