martes, 3 de abril de 2012

Clojure ... primer vistazo



¿Cómo entro al REPL de clojure?

java-jar clojure-1.3.0-RC0.jar


Debe salir esto:
user=> 

¿Cómo salgo del REPL?
En Windows: Ctrl + C
En Linux: Ctrl + D

Hace tiempo que quería probar este lenguaje, y aprovechando las vacaciones por fin pude. Si Scala y Ceylon se me hacían algo "extraños", este en verdad si que lo es.

Hacer una sumatoria es bastante fácil (al menos así parece):

user=> (+ 3 4 5 6) 
18



En Java:

Sumatoria.java
package com.pruebas.01;
public class Sumatoria{
   public static void main(String[] args)throws Exception{
    int suma=0;
   if(args.length!=0){
        for(String e: args){
        suma+=Integer.parseInt(e);

       }
  System.out.println("sumatoria: "+suma);

      }else{

   System.out.println("nada que evaluar");
}
   
   }

}


javac -g Sumatoria.java
java Sumatoria 3 4 5 6
sumatoria: 18


Otros lenguajes

Python   .py

msg="Un simple mensaje en Python"
print msg

Scala   .scala

var msg="Ahora en Scala";
println(msg)

Groovy .groovy

def msg="Y otro más en Groovy"
println("${msg}")

Ceylon   .ceylon

String msg="Y además en Ceylon";
print(msg);


Java   .java

String msg="Y en el poderoso Java";
System.out.println(msg);

Clojure   .clj

user=> "Tratando de usar clojure"
"Tratando de usar clojure"

user=> (new java.util.Date)
#Date Tue Apr 03 11:23:43  CDT 2012

Lista.java


import java.util.List;
import java.util.ArrayList;

public class Prog22{
   public static void main(String[] args)throws Exception{
    List<Integer> lista=new ArrayList<Integer>();
   if(args.length!=0){
        for(String e: args){
        lista.add(Integer.parseInt(e));

       }
  System.out.println("lista: "+lista);

      }else{

   System.out.println("nada que evaluar");
}
   
   }

}


En clojure

user=> (list 12 33 21)
(12 33 21)


Otros ejemplos


Ejecutar programa *.cjl


java -jar clojure-1.3.0-RC0.jar  prog01.cjl


Cambiar el prompt dentro del shell


user=> (ns programador-clojure
                 (:use clojure.xml))


Crear una función
(fn [x,y] (* x y))
(def producto (fn [x,y] (* x y)))
;; para usar
(producto 5 43)  ;; debe dar 215 







¿Qué es Clojure?


Links

  1. http://www.moxleystratton.com/article/clojure/for-non-lisp-programmers
  2. http://clojure.org/downloads
  3. http://in.relation.to/Tutorials/IntroductionToCeylon
  4. http://try-ceylon.rhcloud.com/
IDEs para clojure
  1. clooj https://github.com/arthuredelstein/clooj [IDE]
  2. Clojure Box http://clojure.bighugh.com/ [IDE]
  3. lazytest https://github.com/stuartsierra/lazytest[IDE para pruebas]
  4. enclojure http://enclojure.org/[Plugin para NetBeans]



No hay comentarios:

Publicar un comentario