Smalltalk言語による詩篇第148篇

Cake

こんにちは、Cakeです。

結城さんの「Java言語による主の祈り」に対抗して、
「Smalltalk言語による詩篇第148篇」を書いてみました。
(使徒信条でなくてごめんなさい)
Smalltalk allBehaviorsDo:[:each | each praise: 'Halleluja!!']
…短いですがこれだけです。:)

内容を解説しますと、
Smalltalk というグローバル変数に束縛されているのは
SystemDictionaryというクラスのシングルトンインスタンスです。
これに "allBehaviorsDo: aBlock"
というメッセージを送信すると、
システム中のすべてのクラスとメタクラスをイテレートして、
引数として渡された手続きオブジェクト aBlock を実行します。
ここではすべてのクラスとメタクラスが、praise: 'Halleluja!!'
というメソッドを実行することになります。

しかし実はこのプログラムを実行しても、おそらく praise: 
というメソッドが定義されていないため
doesNotUnderstood エラーになってしまうでしょう。

エラーを回避するためには、下記のプログラムをあらかじめ実行して、
すべてのオブジェクトのルートである Object に praise:
メソッドを追加しておかなければなりません。
Object
  compile: 'praise: phrase
            Transcript show: self name, '':'', phrase; cr'
  classified: 'praise and worship'
Smalltalkerが神様を信じたら、またはクリスチャンがSmalltalkを
インストールしたら、これを真っ先に実行して頂きたいものです。
もちろん、僕は実行済みです。:)

結城より: 上記は、Cakeさん <cake-smd@ops.dti.ne.jp> からのメールを転載したものです。

主の御名を賛美します!

Created: 2001-09-19, Updated: 2001-09-26.