疑問:特異クラスの構文の不思議 - rubyco(るびこ)の日記
屁理屈をこねてみる.後で「それはE言語とかS言語とかの伝統で〜」とか言われそうな悪寒.
Rubyの
class << obj ... end
という特異クラスの構文はなんなのか,という話.
まず,classという構文は通常クラス間の関係を定義するものであるから,ここでも「『objのクラス』となにか」の関係を定義しているものであると仮定する.つまりここの「obj」は「objのクラス」という意味であると仮定する.また,特異クラスをid:hyukiさんにならって「ε」と書くことにする.
このとき,εはobjのクラスのサブクラスであるから,
class ε < obj ... end
と書くことができる.
しかし,一方で,objのクラスとεは一致するのだから,
class obj < ε ... end
も合法であると考えられる.
全体としては,
class ε < obj < ε ... end
となるわけで,εを省略して
class < obj < ... end
ここまでくれば,あとは不等号を前置演算子にすれば,
class << obj ... end
になりそうな気が……
あんまりしませんけど.