Skip to content

Instantly share code, notes, and snippets.

@fgui
Last active October 9, 2015 09:38
Show Gist options
  • Select an option

  • Save fgui/9717f17bd891c18884c0 to your computer and use it in GitHub Desktop.

Select an option

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