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})
CmNsYXNzIFByb2MKICBkZWYgc2VsZl9jdXJyeQogICAgc2VsZi5jdXJyeS5jYWxsKHNlbGYpCiAgZW5kCmVuZAoKCnAgbGFtYmRhIHsgfGYsIHNlcXwgc2VxLmVtcHR5PyA/IFtdIDogc2VxWzEuLnNlcS5zaXplXS5wYXJ0aXRpb24geyB8YXwgYSA8IHNlcS5maXJzdCB9Lm1hcCB7IHxhfCBmLmNhbGwoZiwgYSkgfS5pbnNlcnQoMSwgc2VxLmZpcnN0KS5mbGF0dGVuIH0uc2VsZl9jdXJyeS5jYWxsKCgxLi4xMCkuc29ydF9ieXtyYW5kfSkKCgo=