SlideShare una empresa de Scribd logo
1 de 17
Descargar para leer sin conexión
lisp is Borg
A study in macrology
@sbelak

Tuesday, 22. October, 2013
JVM

dynamic

lisp

Clojure
REPL
immutable

lazy

Tuesday, 22. October, 2013

functional
ClojureScript*

* javascript as ASM
Tuesday, 22. October, 2013
Clojure in Clojure

Tuesday, 22. October, 2013
homoiconicity:

code = data
Tuesday, 22. October, 2013
Tuesday, 22. October, 2013
(
Tuesday, 22. October, 2013

code = data

)

=

AST
Macros
data = code

Tuesday, 22. October, 2013
Macroexpand
vs.
time

Tuesday, 22. October, 2013

run
time
Problem language
macroexpand-1
macroexpand-2
...
macroexpand-n

implementation language
Tuesday, 22. October, 2013
“It’s better to have 100 functions operate on
1 data structure then 10 functions on 10
data structures.”
– A. Perlis

Tuesday, 22. October, 2013
Pattern matching

Tuesday, 22. October, 2013
Logic programming

Tuesday, 22. October, 2013
Typed Clojure

Tuesday, 22. October, 2013
Schema

Tuesday, 22. October, 2013
CSP (goroutine)

Tuesday, 22. October, 2013
code = data
Tuesday, 22. October, 2013

Más contenido relacionado

Más de Simon Belak

Writing smart contracts the sane way
Writing smart contracts the sane wayWriting smart contracts the sane way
Writing smart contracts the sane way
Simon Belak
 
A data layer in clojure
A data layer in clojureA data layer in clojure
A data layer in clojure
Simon Belak
 

Más de Simon Belak (20)

Levelling up your data infrastructure
Levelling up your data infrastructureLevelling up your data infrastructure
Levelling up your data infrastructure
 
The subtle art of recommendation
The subtle art of recommendationThe subtle art of recommendation
The subtle art of recommendation
 
Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2
 
Metabase lj meetup
Metabase lj meetupMetabase lj meetup
Metabase lj meetup
 
Sketch algorithms
Sketch algorithmsSketch algorithms
Sketch algorithms
 
Transducing for fun and profit
Transducing for fun and profitTransducing for fun and profit
Transducing for fun and profit
 
Your metrics are wrong
Your metrics are wrongYour metrics are wrong
Your metrics are wrong
 
Writing smart contracts the sane way
Writing smart contracts the sane wayWriting smart contracts the sane way
Writing smart contracts the sane way
 
Online statistical analysis using transducers and sketch algorithms
Online statistical analysis using transducers and sketch algorithmsOnline statistical analysis using transducers and sketch algorithms
Online statistical analysis using transducers and sketch algorithms
 
Save the princess
Save the princessSave the princess
Save the princess
 
Data driven going to market strategy
Data driven going to market strategyData driven going to market strategy
Data driven going to market strategy
 
Spec: a lisp-flavoured type system
Spec: a lisp-flavoured type systemSpec: a lisp-flavoured type system
Spec: a lisp-flavoured type system
 
A data layer in clojure
A data layer in clojureA data layer in clojure
A data layer in clojure
 
Odkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkovOdkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkov
 
Using Onyx in anger
Using Onyx in angerUsing Onyx in anger
Using Onyx in anger
 
Spec + onyx
Spec + onyxSpec + onyx
Spec + onyx
 
Dao of lisp
Dao of lispDao of lisp
Dao of lisp
 
Predicting the future with goopti
Predicting the future with gooptiPredicting the future with goopti
Predicting the future with goopti
 
Living with-spec
Living with-specLiving with-spec
Living with-spec
 
Living with-spec
Living with-specLiving with-spec
Living with-spec
 

Lisp is borg: a study in macrology