リフレクションによる連想計算でフィボナッチ数を計算

どうぞ次のプログラムを実行してください。計算の準備が整います。

| aString aURL aFilename aCollection |
aString := 'http://www.cc.kyoto-su.ac.jp/~atsushi/Programs/VisualWorks/browsing.st'.
(aURL := JunURL named: aString) exists ifFalse: [^nil].
aURL downloadTo: (aFilename := aURL asURI tail asFilename).
aFilename exists ifFalse: [^nil].
aFilename fileIn.
aString := 'http://www.cc.kyoto-su.ac.jp/~atsushi/Programs/VisualWorks/20080615/fibonacci.st'.
(aURL := JunURL named: aString) exists ifFalse: [^nil].
aURL downloadTo: (aFilename := aURL asURI tail asFilename).
aFilename exists ifFalse: [^nil].
aFilename fileIn.
(aCollection := OrderedCollection new)
	add: #browse: -> (800 @ 600);
	add: #package: -> 'Magnitude-Numbers';
	add: #class: -> #{Core.Integer} value;
	add: #protocol: -> #'mathematical functions';
	add: #selector: -> #fibonacci;
	yourself.
JunSystem
	perform: ((aCollection collect: [:each | each key]) inject: String new
			into: [:selector :key | selector , key]) asSymbol
	withArguments: (aCollection collect: [:each | each value]) asArray

Updated: 2015/11/08 (Created: 2008/06/15) KSU AokiHanko