議論をするときに大切なこと

は、自分の経験、バックグラウンドを単なる一つの事例として客観視することだな、と何度か考える機会があった。しかしそれはものすごく難しい。

自分の経験に元づいた主張は、思いを語るにはよいけど、議論にはならない。思いのぶつけ合いは、そのベクトルの向きが同じであればよいけれど、反対方向の場合は単なる水掛け論にしかならないよね。禁煙の話とか、高校の話とか。

禁煙でふと思いだしたこと。

とりあえず、タバコをポイ捨てするような奴は逮捕でいいと思う、と道を歩くたびに思う。そういう"害虫"がいるから、大して害のないマナーある喫煙者も一緒くたに迫害されるわけだし。害虫はいつの時代も性質が悪い。

Schemeでオブジェクトシステム自作

前回の学科の読書会にて、「Lispならオブジェクト指向のシステムは言語仕様として組込まなくてもいいんだぜ。自分で作ることだってできるんだぜ」と言ったのだけれど、言うは易し行うは難しということで、実際に作ってみることにした。

とりあえず、今はクラス定義とかのマクロを書く準備として、マクロの展開形を書いているところ。

(適当な)仕様

コードの見た目とか動作をみなさんおなじみのJavaっぽく。

ということはつまり、メソッドの名前空間はクラスである。(意味もなく)メソッドをクロージャとして取りだせなくしたり、publicとprivateのアクセスレベルを設定できたり。

こんなコードになるかも。

(class Man
  (private name = "Sussman")
  (public getName ()
    (get-private name))
  (public setName (new-name)
    (set-private! name new-name))
  (public toString ()
    (format #f "My name is ~a" (get this getName))))
 
(define a-man (new Man))
(exec a-man toString) => "My name is Sussman"
(exec a-man setName "Graham") => "Graham"
(exec a-man getName) => "Graham"

キモい、キモすぎる。