Wednesday, April 01, 2015

Mi primer post en Clojure

Mi buen amigo y consejero en Lenguajes de Programación Chris Whealy, me envió un tweet diciendo esto...


Ahí supe que tenía que aprender Clojure...después de todo...Chris fué quien me introdujo en Erlang -;)

Así que...comencé a leer este libro Clojure in Action y claro...pueden esperar un review más adelante...


Tengo experiencia con lenguajes de programación funcional y especialmente con lenguaje de la famila Lisp (Racket) así que pensé que mi experiencia con Clojure iba a ser muy sencilla...no...es divertido pero no tan sencillo como había pensado...y no porque la curva de aprendizaje de Clojure sea dificil...pero porque sigo pensándo que es muy parecido a Racket cuando en realidad no lo es tanto...

Clojure es un lenguaje de la familia Lisp...pero al estar basado en Java (en la JVM para ser exacto) tiene algunas cosas bastante "extrañas" que toman un poco de tiempo para digerir y asimilar...pero por supuesto...eso nunca me ha desalentado...He aprendido Haskell después de todo...así que ningún reto es lo suficiente grande para mi -;) (Bueno...quizas ASM, pero estoy pensando en aprender Fasm uno de estos días...)

Como siempre...no podia contentarme con solamente leer el libro...necesitaba escribir algo de código...y que mejor que un generador de números Fibonacci...

fibonacci.clj
(defn fib [num a b]
 (cond 
  (and (> a 0) (> num 1))
   (concat [(+ a b)] (fib (- num 1) (+ a b) a))
  (= a 0)
   (concat (conj (conj [a] b) (+ a b)) (fib (- num 1) (+ a b) b))))

(defn showFib [num]
  (fib num 0 1))

Aquí está el resultado..


Obviamente...pueden ver que base mi código en mi otro código en Racket...pero las únicas similitudes que quedan son los paréntesis...siendo un lenguaje de la familia Lisp...no puede esperar no utilizar paréntesis, no? -:P

Saludos,

Blag.
Development Culture.

No comments: