はすけるでクイックソート

たまにはコードとか書く!!

qsort [] = []
qsort (x:xs) = qsort [y | y <- xs, y < x] ++ [x] ++ qsort [y | y <- xs, y >= x]

マジかっこいいです。*1

Scheme(Gauche)でクイックソートはこんな感じなんですかね。

(use srfi-1)	; filter
(use util.match)
(define (qsort lis)
  (match lis
    ((x . xs) (append (qsort (filter (pa$ >= x) xs)) (list x) (qsort (filter (pa$ < x) xs))))
    (else ())))

スーパーpre記法が無かった頃はLisp/Schemeぷるぐらまは虐げられてたんだろうなと思うと笑いが止まらん!!!

*1:はすけるのクイックソートをわざわざネタにするなんて勉強してないのバレバレですよ!