15.
Immutable
すべてがイミュータブル
user => (def a {:name "kawasima":age 39})
#'user/a
user => (def b (assoc a :age 40))
#'user/b
user => a
{:name "kawasima" :age 39}
つまりコレクションに対する破壊的操作はできない
http://gotocon.com/dl/goto-cph-2012/slides/value-of-values.pdf
17.
Managed refs
それでは実用的に使いにくいので、refsの仕組みがある。
:name "kawasima"
:age 40
person
person
Immutableなコレクションが新たに作られ、参照先が切り替わる
(def person
(atom {:name "kawasima":age 39}))
(swap! person update-in [:age] inc)
@person
:name "kawasima"
:age 39
×
18.
Epochal time model
person person
:age 39
:name "kawasima"
function
このモデルは、Append-onlyデータベースのDatomicでも採用されています。
http://www.datomic.com/
Identity
Pure functions
:age 40
:name "kawasima"
加齢
Values
state state
19.
Identity/State/Value
http://clojure.org/state
不変的で永続的なデータ構造
不変的に同一実体をさすもの
ある時点でのIdentityと結びついた
Valueの集合
Identity
State
Value
31.
Get started
Clojure Java
依存性 leiningen Maven
IDE Lighttable
Emacs + cider
Intellij IDEA
NetBeans
LightTable: http://www.lighttable.com
leiningen: http://leiningen.org/
Be the first to comment