[SML 7871] Re: 連想計算というリフレクティブな手法

Masato Sumi sumi @ seagreen.ocn.ne.jp
2010年 12月 14日 (火) 15:30:12 JST


sumim こと鷲見です。

連想計算でもリフレクティブでもないので恐縮ですが、
にぎやかしにと、2つほど考えてみました。


Integer >> ffibonacci
   ^((1 to: self) inject: 0 @ 1 into: [:pair :idx | 0 @ pair x + pair y]) x


Integer >> fibonacci
   | temp1 temp2 sender |
   self negative ifTrue: [^nil].
   self = 0 ifTrue: [^0].
   self = 1 ifTrue: [^1].
   temp1 := (self - 1) fibonacci.
   temp2 isNil ifTrue: [temp2 := (self - 2) fibonacci].
   sender := thisContext sender.
   sender method selector = #fibonacci
       ifTrue: [sender tempAt: 2 put: temp1].
   ^temp1 + temp2


SML メーリングリストの案内