Clojure es un lenguaje de programación funcional que corre bajo la JVM, se considera un dialecto de Lisp.
¿Cómo ejecuto un programa en Clojure (desde la terminal de comandos)?
java -jar clojure_version.jar Programa.cjl
La extensión del archivo es *.clj
¿Cómo quedaría el "hola mundo" en Clojure?
Creamos un archivo llamado holamundo.clj escribimos lo siguiente:
;; esto es un comentario
(println "hola mundo!")
Lo ejecutamos:
java -jar clojure_version.jar holamundo.clj
Tenemos nuestro primer script en este lenguaje.
REPL (Read Eval Print Loop) en Clojure
Para entrar al REPL debes teclear:
java -jar clojure_version.jar
Saldrá algo como esto:
Clojure 1.5.1
user =>
Ya puedes comenzar haciendo pruebas.
user => (println "hola mundo")
hola mundo
nil
user => (+ 3 4 5)
12
user => (* 4 (+ 5 6) )
44
user => (def cadena "Una introduccion a Clojure")
#' user/ cadena
user => (println cad)
Una introduccion a Clojure
nil
Para salir teclea Ctrl + C en Windows, y Ctrl + D en Linux.
A mi parecer Clojure es un lenguaje algo complejo, como lo puede ser el uso de paréntesis, los operadores,definir variables y funciones. Pero no es imposible de aprender. Tan solo hay que practicar bastante.
Actualización:
Links:
Descarga: http://clojure.org/
Twitter del creador del lenguaje:https://twitter.com/richhickey
Este lenguaje sigue el paradigma de la programación funcional, el cual que trata la computación como la evaluación de funciones matemáticas y evita cambiar el estado y los datos mutables. La programación funcional se enfoca en la inmutabilidad, las funciones puras y la composición de funciones para crear software robusto y mantenible.
¿Cómo ejecuto un programa en Clojure (desde la terminal de comandos)?
java -jar clojure_version.jar Programa.cjl
La extensión del archivo es *.clj
¿Cómo quedaría el "hola mundo" en Clojure?
Creamos un archivo llamado holamundo.clj escribimos lo siguiente:
;; esto es un comentario
(println "hola mundo!")
Lo ejecutamos:
java -jar clojure_version.jar holamundo.clj
Tenemos nuestro primer script en este lenguaje.
REPL (Read Eval Print Loop) en Clojure
Para entrar al REPL debes teclear:
java -jar clojure_version.jar
Saldrá algo como esto:
Clojure 1.5.1
user =>
Ya puedes comenzar haciendo pruebas.
user => (println "hola mundo")
hola mundo
nil
user => (+ 3 4 5)
12
user => (* 4 (+ 5 6) )
44
user => (def cadena "Una introduccion a Clojure")
#' user/ cadena
user => (println cad)
Una introduccion a Clojure
nil
Para salir teclea Ctrl + C en Windows, y Ctrl + D en Linux.
A mi parecer Clojure es un lenguaje algo complejo, como lo puede ser el uso de paréntesis, los operadores,definir variables y funciones. Pero no es imposible de aprender. Tan solo hay que practicar bastante.
Actualización:
Clojure
Clojure is a robust, practical, and fast programming language with a set of useful features that together form a simple, coherent, and powerful tool.
holamundo.clj
(println "Hola, mundo en Clojure!!")
$ java -jar clojure.jar programa.clj
# 1. Dependencias
sudo apt-get install -y bash curl rlwrap
# 2. Descargar script
curl -O https://download.clojure.org/install/linux-install-1.10.2.774.sh
# 3. Permisos de jecución
chmod +x linux-install-1.10.2.774.sh
# 4. Ejecutar instalador
sudo ./linux-install-1.10.2.774.sh
# 5. Verificar instalación
clj
clj programa.clj
Actualmente hay editores de código que permiten crear aplicaciones con este lenguaje como:
Sitios:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns bisiesto) | |
(comment | |
@author Fer Carraro | |
) | |
;;defino una función para calcular el año bisiesto | |
(defn esbisisesto? [a] | |
(cond (= (mod a 4) 0) (and (= (mod a 100) 0) (= (mod a 400) 0)) :else false);;fin cond1 | |
);;fin funcion | |
;;bloque principal del programa | |
(try | |
(println "Introduce año:") | |
(def anyo (Integer/parseInt (read-line))) | |
(if (= (esbisisesto? anyo) true) (println anyo" es año bisiesto") (println anyo" no es año bisiesto"));;fin if | |
(catch Exception e (prn "Error en "e)) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns cadenas) | |
(def cadena "Esta es una variable String" "ABC") | |
(println "Texto: "cadena) | |
(println "Length: "(.length cadena)) | |
(println "Uppercase: "(.toUpperCase "abc")) | |
(println "Lowercase: "(.toLowerCase cadena )) | |
(println "CharAt[1]: "(.charAt cadena 1)) | |
(def myvector ["A" "B" "C" "D"]) | |
(println "Vector: "myvector) | |
(println "IndexOf[A]: " (.indexOf myvector "A")) | |
(println "IndexOf[B]: " (.indexOf myvector "B")) | |
(println "IndexOf[C]: " (.indexOf myvector "C")) | |
(defn esMayor? "Mi Funcion Booleana" [entrada] | |
(if (> (.length entrada) 10) "Si" "No") | |
) | |
(def nombre "Mi variable nombre" "Fernando") | |
(def ferrocarrilero "Mi variable ferrocarrilero" "ferrocarrilero") | |
(println "La cadena '"cadena "' tiene una longitud mayor a 10?: "(esMayor? cadena)) | |
(println "La cadena '"nombre "' tiene una longitud mayor a 10?: "(esMayor? nombre)) | |
(println "La cadena '"ferrocarrilero"' tiene una longitud mayor a 10?: "(esMayor? ferrocarrilero)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns cuadrado) | |
(import '(javax.swing JOptionPane));' | |
(defn introduceDato [s] | |
(JOptionPane/showInputDialog | |
(str s) | |
) | |
) | |
(def numero(introduceDato "Introduce numero:")) | |
;;convertir String a número | |
(defn String->Number [str] | |
(let [n (read-string str)] | |
(if (number? n) n nil))) | |
;;función cuadrado | |
(defn cuadrado [n] | |
(* n n) | |
) | |
;;'main' del programa | |
(try | |
(JOptionPane/showMessageDialog nil, | |
(str "El numero introducido es: "numero) | |
) | |
(JOptionPane/showMessageDialog nil, | |
(str "Al cuadrado es: "(cuadrado (String->Number numero))) | |
) | |
(catch Exception e | |
(JOptionPane/showMessageDialog nil, | |
(str "Ha ocurrido una excepcion: " (.getMessage e)) | |
) | |
) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns disparejo) | |
(def moneda ["AGUILA" "SOL"]) | |
(println "Elemento indice 0:"(moneda 0)) | |
(println "Elemento indice 1:"(moneda 1)) | |
(println "Obtenemos aleatoriamente:"(moneda (rand-int 2))) | |
(def aleatorio (moneda (rand-int 2))) | |
(println "Obtenemos aleatoriamente:"aleatorio) | |
;; | |
(def hugo (moneda (rand-int 2))) | |
(def paco (moneda (rand-int 2))) | |
(def luis (moneda (rand-int 2))) | |
(def ganador "") | |
(println "Hugo: "hugo) | |
(println "Paco: "paco) | |
(println "Luis: "luis) | |
(if (and (not (= hugo paco)) (not (= hugo luis))) | |
(def ganador "El ganador es Hugo") | |
) | |
(if (and (not (= paco luis)) (not (= paco hugo))) | |
(def ganador "El ganador es Paco") | |
) | |
(if (and (= hugo luis)(= paco luis)) | |
(def ganador "No hay ganador") | |
) | |
(if (and (not (= luis paco)) (not (= luis hugo))) | |
(def ganador "El ganador es Luis") | |
) | |
(println ganador) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns funcional) | |
(comment | |
Funciones en Clojure | |
Sintaxis | |
(defn nombre-func "Comentario" [arg1 arg2 argN] | |
(cuerpo) | |
) | |
) | |
;; Definimos las funciones | |
(defn my-func-hola "Este solo es un clásico Hola, Mundo!!" [] | |
(println "Este solo es un clásico Hola, Mundo!!") | |
) | |
(defn my-func-hola-two "Devuelve un saludo. Verifica si el nombre esta en blanco o es null" [nombre] | |
(if (clojure.string/blank? nombre) | |
(println "Hola, Extraño") | |
(println "Hola,"nombre) | |
) | |
) | |
(defn es-xml? "Verifica si una cadena termina en xml" [documento] | |
(if (clojure.string/ends-with? documento "xml") | |
(println "Se consume el archivo "documento".") | |
(println "El archivo ["documento"] no puede ser procesado.") | |
) | |
) | |
(defn inicia-con-a? "Verifica si una cadena empieza con la letra a" [documento] | |
(if (clojure.string/starts-with? documento "a") | |
(println "Inicia con a: "documento".") | |
(println " ["documento"] no puede ser procesado.") | |
) | |
) | |
(defn my-abs "Esta funcion devuelve un valor absoluto de otro numero" [x] | |
(if (> x 0) | |
x | |
(- x) | |
) | |
) | |
(defn mayor-a-100? "Si es mayor a 100 devolvera un true" [num] | |
(if (> num 100) | |
true | |
) | |
) | |
;; Invocamos funciones | |
(my-func-hola) | |
(println "Absoluto de -3: "(my-abs -3)) | |
(my-func-hola-two "") | |
(my-func-hola-two nil) | |
(my-func-hola-two "Fernando") | |
(es-xml? "informes.xml") | |
(es-xml? "informes.pdf") | |
(es-xml? "") | |
(try | |
(es-xml? nil);; Este frgamento puede provocar un NullPointerException | |
(catch Exception e | |
(println (str "Ha ocurrido una excepcion: \n\t" (.getMessage e))) | |
) | |
) | |
(inicia-con-a? "ana") | |
(inicia-con-a? "alma") | |
(inicia-con-a? "karolina") | |
(try | |
(inicia-con-a? nil);; Este frgamento puede provocar un NullPointerException | |
(catch Exception e | |
(println (str "Ha ocurrido una excepcion: \n\t" (.getMessage e))) | |
) | |
) | |
(println (str "¿100 es mayor a 100?: " (if (mayor-a-100? 100) "Si, es mayor." "No, no lo es."))) | |
(println (str "¿110 es mayor a 100?: " (if (mayor-a-100? 110) "Si, es mayor." "No, no lo es."))) | |
(println (str "¿1000 es mayor a 100?: " (if (mayor-a-100? 1000) "Si, es mayor." "No, no lo es."))) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns fundamentos) | |
(comment | |
@author Fer Carraro | |
) | |
;;Comentario | |
(def msg "*** Fundamentos de programacion en Clojure ***") | |
(println msg) | |
(def verdadero true) | |
(if (= verdadero true) | |
(println "Esto es verdadero y se mostrara en pantalla.") | |
) | |
(def falso (< 33 11)) | |
(if (= falso verdadero) | |
(println "Esto no es verdadero y no se mostrara en pantalla.") | |
) | |
;;funcion | |
(defn sumar [x y] | |
(+ x y) | |
) | |
(defn dividir [x y] | |
(/ x y) | |
) | |
(println "Suma: " (sumar 2 3));;deberia ser 5 la suma total | |
(println "Sumar numeros: "(+ 1 2 3 4 5) );deberia ser 15 | |
;;definimos una clase | |
(defrecord Animal [especie color]) | |
(def perro (Animal. "Canina" "Blanco con negro"));; objeto perro, de tipo Animal | |
(println "Mi perro es de especie"(:especie perro)" y es de color"(:color perro)".") | |
(defn es-pequenyo? [numero] | |
(if (< numero 100) "si" "no")) | |
(println "Resultado:"(es-pequenyo? 12)) | |
(println "Resultado:"(es-pequenyo? 120)) | |
(defn boleto?[edad] | |
(if (<= edad 15) 4.5 (if (>= edad 67) 8.2 19.0)) | |
) | |
(println "Boleto: "(boleto? 12));;4.5 | |
(println "Boleto: "(boleto? 68));;8.2 | |
(println "Boleto: "(boleto? 17));;19.0 | |
;;bucles | |
(println "Bucles") | |
(loop [x 10] | |
(when (> x 1) | |
(println x) | |
(recur (- x 2))) | |
) | |
(println "") | |
(loop [cont 0] | |
(when (< cont 10) | |
(println cont) | |
(recur(+ cont 1)) | |
) | |
) | |
(println "") | |
(def sueldo_neto 6500.0) | |
(def edo_civil "casado") | |
(println "Sueldo neto:" sueldo_neto) | |
(defn es-casado? [civil sueldo] | |
(if (= "casado" edo_civil)(+ sueldo 500.0) (+ sueldo 0.0)) | |
) | |
(def nuevo_sueldo (es-casado? edo_civil sueldo_neto)) | |
(println "Nuevo sueldo: "nuevo_sueldo) | |
;;try-catch | |
(def a 3.0) | |
(def b 0.0) | |
(println "Dividiendo "a "/"b) | |
(try | |
(def division (dividir a b)) | |
(println "Resultado: " division) | |
(catch Exception e (str "Excepcion al dividir: " (.getMessage e))) | |
) | |
;;mayor de un numero | |
(def a 4) | |
(def b -13) | |
(def c 21) | |
(def mayor a) | |
(println "Numeros\na:"a", b:"b", c:"c) | |
(if (< mayor b) | |
(def mayor b) | |
) | |
(if (< mayor c) | |
(def mayor c) | |
) | |
(println "Mayor:"mayor) | |
;;;; | |
(println (or true true));;true | |
(println (and true false));;false | |
(println (not true));;false |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns fundamentos) | |
;; Fundamentos de programación en Clojure | |
(comment | |
Este es | |
un repaso al lenguaje de | |
programación Clojure. | |
Clojure es similar a LISP. De proposito general y funcional. | |
Puede interactuar con código Java al ser dependiente de la JVM. | |
) | |
(import '(javax.swing JOptionPane));' | |
;; Funciones | |
(defn suma "Suma de dos numeros" [x y] | |
(+ x y) | |
) | |
(defn resta "Resta de dos numeros" [x y] | |
(- x y) | |
) | |
(defn multiplica "Multiplicacion de dos numeros" [x y] | |
(* x y) | |
) | |
(defn division "Division de dos numeros" [x y] | |
(/ x y) | |
) | |
;; Esta funcion no devuelve valores | |
(defn Ejemplo "Esta funcion no devuelve nada" [] ( | |
if ( = 2 2) | |
(println "Los valores son iguales") | |
(println "Los valores no son iguales"))) | |
(defn hola "Uso de case" [pais] | |
(case pais | |
:mexico "Hola, México!" | |
:alemania "Hallo, Germany!" | |
:israel "Shalom, Israel!" | |
:francia "Bonjour, France!" | |
"Hello, USA!" | |
) | |
) | |
(defn es-par? [numero] | |
(if (= (mod numero 2) 0) "par" "impar")) | |
(defn esMayor10? "Funcion que devuelve un valor booleano" [x] | |
(if (> x 10) | |
(boolean true)) | |
) | |
(defn parse-int "Regex para converit String a Integer" [s] | |
(Integer. (re-find #"[0-9]*" s))) | |
(defn string-int "Convertir String a Integer" [numStr] | |
(Integer/parseInt numStr) | |
) | |
;; Uso de JOptionPane | |
(defn introduceDato [s] | |
(JOptionPane/showInputDialog | |
(str s) | |
) | |
) | |
;; Definimos una clase Persona | |
(defrecord Persona [nombre edad]) | |
;; Variables, Long, Double, String, Character, Boolean | |
(def strCadena "Definimos una variable String" "Clojure") | |
(def numeroInt "Definimos una variable Integer" 45) | |
(def numeroFloat "Definimos una variable Float" 2.4) | |
(def numeroDouble "Definimos una variable Double" 300.21) | |
(def carChar "Definimos una variable Character" \u0032) | |
(def booleano "Definimos una variable Boolean" true) | |
(println "\t================================") | |
(println "\t [Programando en"strCadena"]") | |
(println "Entero: "numeroInt) | |
(println "Flotante: "numeroFloat) | |
(println "Real: "numeroDouble) | |
(println "Caracter: "carChar) | |
(println "Booleano: "booleano) | |
(println "Tipo [numeroInt]:"(type numeroInt)) | |
(println "Tipo [numeroFloat]:"(type numeroFloat)) | |
(println "Tipo [numeroDouble]:"(type numeroDouble)) | |
(println "Tipo [carChar]:"(type carChar)) | |
(println "Tipo [booleano]:"(type booleano)) | |
(println "Tipo [strCadena]:"(type strCadena)) | |
(println "\t================================") | |
;; Uso de funciones | |
(def x 4) | |
(def y 1) | |
(println "x ="x", y="y) | |
(println "Suma:"(suma x y));; 5 | |
(println "Resta:"(resta x y));; 3 | |
(println "Producto:"(multiplica x y));; 4 | |
(println "Division:"(division x y));; 4 | |
(Ejemplo) | |
(println "\t================================") | |
;; Operaciones y funciones matemáticas | |
(println "4+5-(3*2)="(- (+ 4 5) (* 3 2)));; 3 | |
(println "5/6/3+(5*2)-4="(- (+ (/ (/ 5 6) 3) (* 5 2)) 4));; 113/18 | |
(println "(3*3)-(5+6)="(- (* 3 3) (+ 5 6)));; -2 | |
(println "(8-9)*(6+3)="(* (- 8 9) (+ 6 3)));; -9 | |
(println "220%200="(mod 220 200));; 20 | |
(println "100%10="(mod 100 10));; 0 | |
(println "340%300="(mod 340 300));; 40 | |
(println "Maximo de (1 2 3 4 5)="(max 1 2 3 4 5));; 5 | |
(println "Maximo de (5 1 66 0 4 8 21)="(max 5 1 66 0 4 8 21));; 66 | |
(println "Minimo de (1 2 3 4 5)="(min 1 2 3 4 5));; 1 | |
(println "Minimo de (5 1 66 0 4 8 21)="(min 5 1 66 0 4 8 21));; 0 | |
(println "PI = "(Math/PI)) | |
(println "PI * 2 = "(* Math/PI 2)) | |
(println "No. aleatorio [rand 2] = "(rand 2)) | |
(println "No. aleatorio [rand 10] = "(rand 2)) | |
(println "No aleatorio [rand-int 100]= "(rand-int 100)) | |
(println "Euler ="(Math/E)) | |
(println "Pow(2, 10) ="(Math/pow 2 10)) | |
(println "Pow(56, 2) ="(Math/pow 56 2)) | |
(def cont 1) | |
(println "Cont:"cont);; 1 | |
(println "Cont:"(inc cont));; 2 | |
(println "\t================================") | |
;; Funciones de cadena | |
(println "FERROCARRILERO tiene una longitud de:"(.length "FERROCARRILERO")) | |
(println "MURCIELAGO tiene una longitud de:"(.length "MURCIELAGO")) | |
(println "fernando en mayusculas:"(.toUpperCase "fernando")) | |
(println "BENANCIO en minusculas:"(.toLowerCase "BENANCIO")) | |
(println "El primer caracter de ABCDEF="(.charAt "ABCDEF" 0));; A | |
(println "El tercer caracter de ABCDEF="(.charAt "ABCDEF" 2));; C | |
(println "El ultimo caracter de ABCDEF="(.charAt "ABCDEF" 5));; F | |
(println "'FER' contiene 'E'?"(.contains "FER" "E"));; true | |
(println "'FER' contiene 'Y'?"(.contains "FER" "Y"));; false | |
;; Funciones de cadena propias de Clojure | |
(println "Quitar espacios:"(clojure.string/trim " Cadena con espacios ")) | |
(def strCadenaMayus "Esta es una cadena en mayusculas" "ALFABETO") | |
(def strCadenaMinus "Esta es una cadena en minusculas" "ana maria") | |
(println strCadenaMayus) | |
(println "En minusculas:"(clojure.string/lower-case strCadenaMayus)) | |
(println strCadenaMinus) | |
(println "En mayusculas:"(clojure.string/upper-case strCadenaMinus)) | |
(println (str "Bienvenidos" " a Clojure City"));; concatenar | |
(println (format "Guten , %s" "Tag amigos!!")) | |
(println (format "Numero: %d" 1234)) | |
(println "Y la cadena mide:"(count "Y la cadena mide")" de longitud") | |
(println "\t================================") | |
;; Condicionales | |
(if (= (compare "A" "A") 0) | |
(println "Son iguales") | |
) | |
;; Esto no se vera | |
(if (= (compare "B" "A") 0) | |
(println "No son iguales") | |
) | |
(if (= (compare "X" "X") 0) | |
(println "No son identicas") | |
(println "Son identicas") | |
) | |
(println (hola :mexico)) | |
(println (hola :francia)) | |
(def opcion 3) | |
(println "\t Menu\n\t1. Caviar\n\t2. Huevo con arroz\n\t3. Solo una uva.") | |
(def eleccion "Asignamos el resultado en esta variable" (case opcion 1 "Esta muy caro, ¿Realmente quiere desayunar eso?" 2 "Aceptable para este dia" 3 "Muy poco, ¿no crees?, te sale gratis" "Eso no esta disponible" )) | |
(println eleccion) | |
(def monto "Definimos una variable tipo Integer" 500) | |
(def resultado (cond (> monto 700) "Es un monto mayor a $700" (> monto 600) "Es un monto mayor a $600" (> monto 500) "Es un monto mayor a $600" (> monto 400) "Es un monto mayor a $400" true "Es un monto que no cumple el criterio" )) | |
(println "Monto:"(str "$" monto)) | |
(println resultado) | |
(println "12 es :"(es-par? 12)) | |
(println "20 es :"(es-par? 20)) | |
(println "37 es :"(es-par? 37)) | |
(println "45 es :"(es-par? 45)) | |
(println "\t================================") | |
;; Excepciones | |
(try | |
(println "Introduce un numero:") | |
(def entradaInt (read-line)) | |
(if (esMayor10? (parse-int entradaInt)) | |
(println (str entradaInt " es mayor a 10")) | |
) | |
(catch Exception e | |
(println (str "Ha ocurrido una excepcion: \n\t" (.getMessage e))) | |
) | |
) | |
(def entradaStr "32") | |
(def entradaStrToInt (string-int entradaStr)) | |
(try | |
(if (esMayor10? entradaStrToInt) | |
(println (str entradaStrToInt " es mayor a 10")) | |
) | |
(catch Exception e | |
(println (str "Ha ocurrido una excepcion: \n\t" (.getMessage e))) | |
) | |
) | |
(println "\t================================") | |
(try | |
(def nombre(introduceDato "Introduce tu nombre:")) | |
(JOptionPane/showMessageDialog nil, | |
(str "Hola, "(clojure.string/upper-case nombre)". \nBienvenido a City Clojure!!") | |
) | |
(catch Exception e | |
(println (str "Ha ocurrido una excepcion: \n\t" (.getMessage e))) | |
) | |
) | |
(println "\t================================") | |
;; Clases | |
(def fernando "Definimos un objeto de tipo persona" (Persona. "Fernando Carraro Aguirre" 40)) | |
(println "Persona:"fernando) | |
(println "\t[Persona]\n\tNombre:"(:nombre fernando)) | |
(println "\tEdad:"(:edad fernando)"años") | |
(println "Tipo:"(type fernando)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns holmundo) | |
(comment | |
Hola, mundo en Clojure | |
) | |
(println "Hola, mundo enClojure!!") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns interop) | |
(import java.util.Date) | |
(import java.lang.String) | |
(import '(javax.swing JOptionPane));' | |
(import java.net.URL) | |
(println "Fecha: "(Date.)) | |
(println "Booleano: "(Boolean/valueOf "true")) | |
(println "Cadena: "(String/valueOf 33)) | |
(println "Entero: "(Integer/parseInt "11")) | |
(println "Flotante: "(Float/parseFloat "12.5f")) | |
(println "Sistema operativo: "(. (. System (getProperties)) (get "os.name"))) | |
(println "Verdion del JDK: "(System/getProperty "java.vm.version")) | |
(def myURL "Una URL de algun sitio web" "https://www.udemy.com") | |
(println "URL: "(URL. myURL)) | |
;; Uso de JOptionPane | |
(defn introduceDato [s] | |
(JOptionPane/showInputDialog | |
(str s) | |
) | |
) | |
(def numero(introduceDato "Introduce numero:")) | |
;;convertir String a número | |
(defn String->Number [str] | |
(let [n (read-string str)] | |
(if (number? n) n nil))) | |
;;función cubo | |
(defn cubo [n] | |
(* n n n) | |
) | |
;;'main' del programa | |
(try | |
(JOptionPane/showMessageDialog nil, | |
(str "El numero introducido es: "numero) | |
) | |
(JOptionPane/showMessageDialog nil, | |
(str "Al cubo es: "(cubo (String->Number numero))) | |
) | |
(catch Exception e | |
(JOptionPane/showMessageDialog nil, | |
(str "Ha ocurrido una excepcion: " (.getMessage e)) | |
) | |
) | |
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns mayor) | |
(def x 6) | |
(def y 3) | |
(println "x= "x) | |
(println "y= "y) | |
(if (> x y) | |
(println x">"y) | |
) | |
(if (= 3 3) | |
(println "Es verdadero") | |
) | |
(if (> 9 4) | |
(println "Esto es verdadero") | |
) | |
(if (< 11 10) | |
(println "X") | |
(println "Y");;Y | |
) | |
(if (not= 10 11) | |
(println "A");;A | |
(println "B") | |
) | |
(if (not= 11 11) | |
(println "O") | |
(println "P");;P | |
) | |
;;; | |
(def x 1) | |
(def a 2) | |
(def b 0) | |
(cond | |
(= x a) (println "Alef") | |
(= x b) (println "Bet") | |
:else (println "Salida")) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(ns variables) | |
(comment | |
Variables en Clojure | |
) | |
;; Tipos de datos | |
(def entero 32) | |
(def nombre "Clojure") | |
(def booleano true) | |
(def real 34.22) | |
(println "Entero: "entero) | |
(println "Nombre: "nombre) | |
(println "Real: "real) | |
(println "Booleano: "booleano) |
Descarga: http://clojure.org/
Twitter del creador del lenguaje:https://twitter.com/richhickey
Comentarios
Publicar un comentario