Nop いらなくないですか。 then に関して。

ioNop 面白い…けどいらない。

write(Nop, "\n")
write(Nop protos, "\n")
Nop hello := method(write("hello\n"))
Nop hello

なんてしても何も起きない。 Nil よりはるかにやる気のないオブジェクト。ニートっぽい。というか Nil は将来に対する期待に満ちあふれている。だって else に反応するし。

一引数 if はいらない。 if (val == 1) then と (val == 1) then は等価だから。

ところで昔は Object#then は Nop じゃなくてブロックを評価した値を返しててこらダメやんと思った記憶があります。

いやでも。

mode := if (modeStr == "640x480") then (0) else (1)

とかしたくないですか…ってことでやっと本題。

Object then = method(v,
  v then := method(self)
  v
)
Object elseif = method(self)
Object else = method(self)

これでできるようになった。あと、

(a == 1) then (...) else (...) else (...)

とかする子はママの子じゃありません。

まぁこの実装だとさっきの例で言う mode に対して then が呼ばれると通常と逆挙動になっちゃうからダメ、ってのはあるけど…

なにかあれば下記メールアドレスへ。
shinichiro.hamaji _at_ gmail.com
shinichiro.h