6/04/2007

reverse

最近関数型をほんの少し勉強して気になったこと.

reverse.
リストを反転させるものです.

SqueakやRuby,Pythonでもおなじみの機能です.

ところでSqueakではreverseはどのように動いているのでしょう.

ちょっと調べてみました.

reverseはSequenceableCollection>>reverseが元のよう.そのなかではself reversedをしているのでそちらを参考.



SequenceableCollection>>reversed

"Answer a copy of the receiver with element order reversed."
"Example: 'frog' reversed"

| n result src |
n := self size.
result := self species new: n.
src := n + 1.
1 to: n do: [:i | result at: i put: (self at: (src _ src - 1))].
^ result

なるほど・・・.

Squeakってプログラミングの勉強にもなりそうですね.

へっぽこ学生(自分のこと)にはかなりいい教材です.

0 件のコメント: