Professional Documents
Culture Documents
DavidNolen TheFunctionalFinalFrontier
DavidNolen TheFunctionalFinalFrontier
& JavaScript
Immutability, Interactivity
& JavaScript
(er ClojureScript)
Model-View-Controller
Mutable DOM
Functional Programming?
Sharing structure
space efficiency
computational efficiency avoids copying
Phil Bagwell
Array Mapped Trie
Hash Array Mapped Trie
Persistent Vector
Persistent Vector
Persistent Vector
Persistent Vector
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Persistent Vector
getindex
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
0b01101010
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
0b01101010
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
0b01101010
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
0b01101010
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
0b01101010
107
108
109
110
111
Persistent Vector
assoc
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
Persistent Vector
96
97
98
99
100
101
102
103
108
109
110
111
Persistent Vector
Length 4 internal vectors?
Persistent Vector
32
32
34,359,738,368
elements
Om
f(D0) = V0
f(D1) = V1
di(V0,V1) = CHANGES
demo
demo
Questions?