Ruby でワンライナーでクイックソート

と、いっても lambda で簡単に再帰するために Proc を拡張しているんですが。

[ソース]

class Proc
  def self_curry
    self.curry.call(self)
  end
end

p lambda { |f, seq| seq.empty? ? [] : seq[1..seq.size].partition { |a| a < seq.first }.map { |a| f.call(f, a) }.insert(1, seq.first).flatten }.self_curry.call((1..10).sort_by{rand})

[出力]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


クイックソートを無理やりワンライナーにして、lambda で再帰しているだけですね。
可読性もクソもないですね。
確実に次の日に読めない自信がある。
しかし、self_curry 面白い。