コストは気にせず書くと,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 件のコメント:
コメントを投稿