SlideShare ist ein Scribd-Unternehmen logo
1 von 17
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Mehr von Simon Belak

Levelling up your data infrastructure
Levelling up your data infrastructureLevelling up your data infrastructure
Levelling up your data infrastructureSimon Belak
 
The subtle art of recommendation
The subtle art of recommendationThe subtle art of recommendation
The subtle art of recommendationSimon Belak
 
Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2Metabase Ljubljana Meetup #2
Metabase Ljubljana Meetup #2Simon Belak
 
Metabase lj meetup
Metabase lj meetupMetabase lj meetup
Metabase lj meetupSimon Belak
 
Sketch algorithms
Sketch algorithmsSketch algorithms
Sketch algorithmsSimon Belak
 
Transducing for fun and profit
Transducing for fun and profitTransducing for fun and profit
Transducing for fun and profitSimon Belak
 
Your metrics are wrong
Your metrics are wrongYour metrics are wrong
Your metrics are wrongSimon Belak
 
Writing smart contracts the sane way
Writing smart contracts the sane wayWriting smart contracts the sane way
Writing smart contracts the sane waySimon Belak
 
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 algorithmsSimon Belak
 
Save the princess
Save the princessSave the princess
Save the princessSimon Belak
 
Data driven going to market strategy
Data driven going to market strategyData driven going to market strategy
Data driven going to market strategySimon Belak
 
Spec: a lisp-flavoured type system
Spec: a lisp-flavoured type systemSpec: a lisp-flavoured type system
Spec: a lisp-flavoured type systemSimon Belak
 
A data layer in clojure
A data layer in clojureA data layer in clojure
A data layer in clojureSimon Belak
 
Odkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkovOdkrivanje segmentov iz podatkov
Odkrivanje segmentov iz podatkovSimon Belak
 
Using Onyx in anger
Using Onyx in angerUsing Onyx in anger
Using Onyx in angerSimon Belak
 
Predicting the future with goopti
Predicting the future with gooptiPredicting the future with goopti
Predicting the future with gooptiSimon Belak
 
Living with-spec
Living with-specLiving with-spec
Living with-specSimon Belak
 
Living with-spec
Living with-specLiving with-spec
Living with-specSimon Belak
 

Mehr von 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