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

Claude Code: un nuevo enfoque de la programación por pares

Claude Code es una herramienta de inteligencia artificial creada por Anthropic que funciona directamente en la terminal. Sirve para acele...

Etiquetas

Archivo del blog