style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

Clojure ... comparativa con Groovy

Entrar al REPL de groovy

groovysh

Entrar al REPL de clojure

java -jar clojure-1.3.0-RC0.jar

Ejecutar programa *.groovy

groovy tuPrograma.groovy

Ejecutar programa *.cjl

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

¿Cómo salgo del REPL de groovy?

exit y/o quit

¿Cómo salgo del REPL de clojure?

En Windows: Ctrl + C
En Linux: Ctrl + D

Definir variables

variables.groovy

/*se puede usar la síntaxis propia de Groovy*/
def entero=3
def real=3.4
def cadena="La cadena que es una simple cadena"
def caracter='a'
/*o la de Java*/
int entero=9
double real=23.1
String cad="En este verano espero comer mucho brocoli"
char caracter='e'

...
...
def a=9
def b=3
def suma=a+b
println("Suma de ${a} y ${b}  es: ${suma}")

variables.cjl

(def entero 23) ;; tipo int
(def real 4.6) ;; tipo double
(def cadena "Pepe pica papas con un pico") ;; tipo String
(def caracter 'u') ;; tipo char

...
...
(def a 25)
(def b 65)
(def suma(+ a b))
(println suma)

Definir funciones

funciones.groovy

/*definir closures*/
def suma1={x,y-> x+y}
def resta1={x,y-> x-y}
def producto1={x,y-> x*y}
def division1={x,y-> x/y}
//definir funciones
def suma2(x,y){return x+y;}
def resta2(x,y){return x-y;}
def producto2(x,y){return x*y}
def division(x,y){return x/y;}
//invocar closure
println("Usando closure suma: "+suma1(6,5))//debe dar 11
println("Usando closure resta: "+resta1(6,5))//debe dar 1
println("Usando closure producto: "+producto1(6,5))//debe dar 30
println("Usando closure division: "+division1(6,5))//debe dar 1.2

//invocar funciones
println("Usando función suma: "+suma2(5,78))//debe dar 83
println("Usando función resta: "+resta2(5,78))//debe dar -73
println("Usando función producto: "+producto2(5,78))//debe dar 390
println("Usando función division: "+division(5,78))//debe dar 0.0641025641

funciones.cjl

;; definir funciones
;;suma
(fn [x,y] (+ x y))
(def suma (fn [x,y] (+ x y)))
;;resta
(fn [x,y] (- x y))
(def resta (fn [x,y] (- x y)))
;;producto
(fn [x,y] (* x y))
(def producto (fn [x,y] (* x y)))
;;división
(fn [x,y] (/ x y))
(def division (fn [x,y] (/ x y)))

;;invocar funciones
(println (suma 23 5));; debe dar 28
(println (resta 23 5));; debe dar 18
(println (producto 23 5));; debe dar 115
(println (division 23 5));; debe dar 23/5

Introducir datos en groovy

/*es mejor usar java.util.Scanner*/
import java.util.Scanner
Scanner teclado=new Scanner(System.in)
def edad=0
println("Introduce edad:")
nombre=teclado.nextInt()
println("Tienes ${edad}")

Introducir datos en clojure

;; introducir datos
(import '(java.util Scanner))
(println "Introduce datos")
(def scan (Scanner. *in*))
(def a (.nextInt scan))
(def b (.nextDouble scan))
(println "Ver datos")
(println a)
(println b)

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de skuarch

sintaxis

me doy cuenta que no me gusta la sintaxis de clojure muchos parentesis y muchos puntos y comas

Imagen de ezamudio

sumerios


La culpa es de los sumerios, que crearon el lenguaje hace unos 6mil años y pues lo más fácil de escribir en piedra eran los paréntesis, por eso usaban tantos.

Posteriormente los egipcios crearon Perl, que posteriormente al ser implementado en computadoras, tuvieron que cambiar muchos símbolos por algo más rápido de teclear.

Imagen de Sr. Negativo

sumerios??

La culpa es de los sumerios, que crearon el lenguaje hace unos 6mil años y pues lo más fácil de escribir en piedra eran los paréntesis, por eso usaban tantos.
Posteriormente los egipcios crearon Perl, que posteriormente al ser implementado en computadoras, tuvieron que cambiar muchos símbolos por algo más rápido de teclear.

jaja ... ¿es en serio?

0_o

Imagen de Jose Manuel

Esto me recuerda mucho a un

Esto me recuerda mucho a un trabajo que me dejaron sobre Lisp x_x se me hizo raro ese lenguaje. ¡La lambda!
Supongo que los sumerios son los que inventaron Lisp jajaja. Las crónicas tipo chiste de Enrique LOL

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">