Clojure
• dynamické vývojové prostředí
• datově orientovaný jazyk
• Simple by Design
• Lisp on JVM
• od začátku zamýšlená jako hostovaný jazyk
• prvotřídní interop s hostitelskou platformou
Slide 5
Slide 5 text
EDN Typy
string "foo"
character \f
integer 42, 42N
floating point 3.14, 3.14M
boolean true, false
nil nil
symbol foo, +
keyword :foo, 9:foo
Slide 6
Slide 6 text
EDN Datové struktury
list sequential (1 2 3)
vector sequential, random access [1 2 3]
map associative {:a 1 :b 2}
set membership #{:a :b :c}
Slide 7
Slide 7 text
Funkce
(println "Hello #jsDevMeetup!")
Slide 8
Slide 8 text
Funkce
(println "Hello #jsDevMeetup!")
volání funkce parametr
Slide 9
Slide 9 text
Funkce
(println "Hello #jsDevMeetup!")
list
symbol string
Slide 10
Slide 10 text
Definice funkce
(defn greet
"Returns a friendly greeting"
[your-name]
(str "Hello, " your-name))
Slide 11
Slide 11 text
Definice funkce
(defn greet
"Returns a friendly greeting"
[your-name]
(str "Hello, " your-name))
function name
doc string
parameters
function body
Slide 12
Slide 12 text
A dál?
• klíčová slova
• operátory
• speciální výrazy
• direktivy preprocesoru
Slide 13
Slide 13 text
A dál?
• klíčová slova
• operátory
• speciální výrazy
• direktivy preprocesoru
Zbytečný
Slide 14
Slide 14 text
–Rich Hickey
“Clojure is a small language,
and intends to remain so”
Slide 15
Slide 15 text
ClojureScript
Slide 16
Slide 16 text
ClojureScript
• Dialekt Clojure
• Cílí na všechna moderní JS prostředí
• BCL
• Google Closure Library
• cljs.core
• cljs.test
• cljs.string
• Google Closure Compile (gcc)
Slide 17
Slide 17 text
REPL Driven Development
• interaktivní vývoj
• rychlá zpětná vazba
• nástroje
• cljs.main
• lumo
• lein figwheel
Slide 18
Slide 18 text
qlkit
• univerzální (client/server) wrapper React.js
• stejná syntaxe pro markup a dotazovaní dat
• komponenty určují, jaká data v jakém tvaru
potřebují
Slide 19
Slide 19 text
core.async
• Implementace CSP a Go kanálů jako knihovna
• psaní async a paralelních procesů lineárním stylem
• základní kámen pro tvorbu robustních systémů
Slide 20
Slide 20 text
transit
• knihovna pro přenos rozšiřitelných typů dat (EDN)
• enkóduje data do formátu JSON (nebo do MsgPack)
• vysoká rychlost parsování v browserech
• typová bezpečnost bez ztráty informací a
přesnosti
Slide 21
Slide 21 text
spec
• specifikace dat pomocí regulárních výrazů
• spustitelná dokumentace
• typy na steroidech
• lepší chybové hlášky
• generativní testování
• Open-Closed Principle ➡ dopředná kompatibilita