プロトタイプベース・OOPL ではご先祖様を動的に変更できる、というのが普通だと思います。
《コード略》
ところで、自分自身のご先祖様に自分自身を指定するとどうなるのでしょう。たとえば javascriptisms はそのような状況は想定してないので、自分自身のご先祖様に自分自身を指定すると、メソッド委譲が輪になってしまい,いつまでたっても解決しません。
《コード略》
一昨日気付いたこの状態は "Chain of irresponsibility"(無責任の連鎖) と命名されました。その他のプロトタイプベース言語が今手元にないので、一般の言語でこのようなループに何らかの対策ができているのかはわかりません。
Io については、CoffeeDiary で Akiyah さんが試しておられるので、インスタンスベース*1の始祖的存在である SELF で試してみました。
globals _AddSlots: (| o <- (). p <- () |) o slot "=> Error: No 'slot' slot found in an object. " p _AddSlots: (| slot = 3 |) o _AddSlots: (| parent* = p |) o slot "=> 3 " o _AddSlots: (| parent* = o |) o slot "=> Error: No 'slot' slot found in an object. "
…ということで、対処済みのようです。逆にここでループにならないことは、インスタンスベースをどのくらい真面目に考えて設計されているかの指標にもなりそうです。