コストは気にせず書くと,Haskellっぽく記述できます.
Squeak 4.1以前のSqueakだと以下のプログラムは実行できません.
quickSort := [:array |
| x xs left right |
array isEmpty ifTrue:[ array ] ifFalse:[
x := array first.
xs := array allButFirst.
left := xs select:[:v | v < x].
right := xs select:[:v | v >= x].
(quickSort value: left ),{x}, (quickSort value:right )]].
quickSort value: #(30 10 20 40 80 60).
ここでのポイントは,ブロック内リターンを使わないこと.ブロックは最後に評価したオブジェクトの返り値がかえるので,それを利用すること.
0 件のコメント:
コメントを投稿