TL;DR

  • 状態とはある時点での同一実体(identity)の値である。Clojure は同一実体と値を明確に区別し、ほぼすべてのものを値として扱う。
  • 状態の変更は ref(協調的かつ同期的)、atom(非協調的かつ同期的)、agent(非同期的)、var(スレッドローカル)の 4 つの参照型で管理する。
  • ref、atom、agent は、直前の状態を更新関数に渡して新しい状態を得る、統一された更新モデルに従う。

内容

ロックを扱う複雑さを避けるために Clojure が用意した 4 つの参照型と、それらに共通する更新モデルを扱う。各節のまとめは次のページにある。

キーワード