続Booでクイックソート

import System.Console

def qsort(xs as (int)) as (int):
    return xs if len(xs) <= 1
    return qsort(array(int, [x for x in xs[1:] if x < xs[0] ])) + xs[0:1] + \
           qsort(array(int, [x for x in xs[1:] if x >= xs[0] ]))

xs = (1,9,8,2,3,7,6,4,5,0)
print join(qsort(xs))

昨日のキャストしまくりより、こっちの方がいいかな。

[x for x in xs[1:] if x < xs[0] ]

上記の書き方はList Generatorsといいましてコレクションから条件を満たす要素のリストを生成します。Listになると要素の型が分からなくなるので昨日の例ではキャストしていたのですが、array(型,コレクション)で配列に戻してやれば良かったんですね。