読者です 読者をやめる 読者になる 読者になる

io で hoge++ が実装できるようになっていた。

iolanguage

以前はできなかった、と思う。*1

Number ++ := method(
  varname := call message previous name
  now := call sender getSlot(varname)
  if (now, call sender setSlot(varname, now + 1))
  self
)

a := 1
a println                 # => 1
a ++ println              # => 1 (後置なので返ってくるのは 1 !)
a println                 # => 2

(a++ + 456 / 3) println   # => 154
a println                 # => 3

1++ println               # => 一応、リテラルに対してやってもエラーがでないように…

以前は、 call message previous が実装されていなかったために、変数名を知ることができなかった(はず)。

仕様

hoge moge ++ だと残念なことに。

*1:ずいぶん前の話かもしれないが