(define -ayalog '())

括弧に魅せられて道を外した名前のないプログラマ

Clojure の Var に関して覚書

なんか面倒くさい。 Clojure Programming 読んでていきなり Chapter1 とかでチラッと出てくるんだけど、一緒に Clojure 勉強しているスクラムマスターが混乱したくらいには面倒くさいというか。面倒くさい。

事の発端はこれ

僕のこの段階での認識としては、以下の通りだった。

  • var を使えばオブジェクトそのものを参照できる
  • 同名のシンボルを定義した場合、環境に新しく定義されたシンボルの方が参照されるのではないか

ただ自信もないし、うーんって感じだったので Twitter で識者にちょっと聞いてみた。
Clojure の Var について - Togetterまとめ

結局 def を使うときに Var オブジェクトを同時に作っていてそれは「参照」であり、その「参照」はミュータブルなオブジェクトということでいいらしい。だから、 def によって再定義が可能であるとか。ただ、参照先のオブジェクトは不変ですよ、と。難しいなー。もう少しいろんなことを勉強しなくては。特に束縛あたりの理解が曖昧だ。むーん。