こんにちは、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.