最近関数型をほんの少し勉強して気になったこと.
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 件のコメント:
コメントを投稿