Skip to content

Instantly share code, notes, and snippets.

@fgui
Last active October 9, 2015 09:38
Show Gist options
  • Save fgui/9717f17bd891c18884c0 to your computer and use it in GitHub Desktop.
Save fgui/9717f17bd891c18884c0 to your computer and use it in GitHub Desktop.
introducción a clojure

introducción a clojure / clojurescript

¿clojure?

dialecto de LISP

  • dynamic
  • funcional
  • el código son datos (homoiconic)
  • syntactic abstractions
    • functions
    • macros (no reader macros)
  • repl (-> read eval print loop)
  • sequence

specifico clojure/cljs

  • con estructuras de datos immutables con peristencia
  • estado mutable / concurréncia
    • acceso atómico (atom)
    • sistema de memória transaccional (STM refs dosync)
    • sistema agentes reactivos (agents)
  • ¿donde puedo usar clojure?
    • en java/JVM
    • en javascript (clojurescript)
    • puedes compartir código común.
  • polimórfico/oo (oo+ defmulti, protocols, records, types)
  • filosofía: pequeño conjunto de tipos con muchos metodos/funciones por tipo vs inversa.

sintaxis y evaluación

estructura de datos () []

  • List ()
  • Vector []
  • Map, Set

evaluación por substitución

  • List no se evalua a una lista.
    • (El resto de estructuras si)
  • primer elemento lista es el operador
    • función (evalución por substitución)
    • special form (def, fn, if, do, let,…)
    • macro (cond, defn,…)
  • notación prefijo (* 2 (+ 1 2 3))

Reader forms

  • Symbols
  • Keywords
  • Numbers (Rational, Enteros, Decimales)
  • String, Character
  • Boolean
  • nil
  • List (1 2)
  • Vector [1 2]
  • Map {:key “value”}
  • Set #{1 2}
  • deftype, defrecord

¿Dondé esta my loop?

  • loop/recur
  • sequences (seqs) (Seq first, rest, cons) +
  • high order functions
  • lazy sequence

Java/Javascript interop

referencias

clojure.org

intro clojure for java programmers by Rich Hickey

https://www.youtube.com/watch?v=P76Vbsk_3J0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment