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

Tues...
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
Upcoming SlideShare
Loading in …5
×

Lisp is borg: a study in macrology

908 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
908
On SlideShare
0
From Embeds
0
Number of Embeds
40
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Lisp is borg: a study in macrology

  1. 1. lisp is Borg A study in macrology @sbelak Tuesday, 22. October, 2013
  2. 2. JVM dynamic lisp Clojure REPL immutable lazy Tuesday, 22. October, 2013 functional
  3. 3. ClojureScript* * javascript as ASM Tuesday, 22. October, 2013
  4. 4. Clojure in Clojure Tuesday, 22. October, 2013
  5. 5. homoiconicity: code = data Tuesday, 22. October, 2013
  6. 6. Tuesday, 22. October, 2013
  7. 7. ( Tuesday, 22. October, 2013 code = data ) = AST
  8. 8. Macros data = code Tuesday, 22. October, 2013
  9. 9. Macroexpand vs. time Tuesday, 22. October, 2013 run time
  10. 10. Problem language macroexpand-1 macroexpand-2 ... macroexpand-n implementation language Tuesday, 22. October, 2013
  11. 11. “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
  12. 12. Pattern matching Tuesday, 22. October, 2013
  13. 13. Logic programming Tuesday, 22. October, 2013
  14. 14. Typed Clojure Tuesday, 22. October, 2013
  15. 15. Schema Tuesday, 22. October, 2013
  16. 16. CSP (goroutine) Tuesday, 22. October, 2013
  17. 17. code = data Tuesday, 22. October, 2013

×