From: "nobu (Nobuyoshi Nakada)" Date: 2013-02-24T22:32:51+09:00 Subject: [ruby-core:52818] [ruby-trunk - Feature #7939] Alternative curry function creation Issue #7939 has been updated by nobu (Nobuyoshi Nakada). It's Partial Application, not currying. ---------------------------------------- Feature #7939: Alternative curry function creation https://bugs.ruby-lang.org/issues/7939#change-36922 Author: drKreso (Kresimir Bojcic) Status: Open Priority: Normal Assignee: Category: Target version: I really like the new "assuming" method used for currying in Perl 6. For example if I loose my mind and implement fizzbuzz via currying I can do it like this: fb = ->(modulo_number, message, x) { message if x % modulo_number == 0 } fizzbuzz = fb.curry[15,"FizzBuzz"] fizz = fb.curry[3, "Fizz"] buzz = fb.curry[5, "Buzz"] (1..100).each { |i| puts fizzbuzz[i] || fizz[i] || buzz[i] || i } Here the first hurdle is that curry is somewhat mathematical, and the secons is that you need to use [] for function invoking... If we had something similar to this: class Proc def assuming(*args) curry.call *args end end It could be written more naturally IMO: fb = ->(modulo_number, message, x) { message if x % modulo_number == 0 } fizzbuzz = fb.assuming(15,"FizzBuzz") buzz = fb.assuming(5, "Buzz") fizz = fb.assuming(3,"Fizz") (1..100).each { |i| puts fizzbuzz[i] || fizz[i] || buzz[i] || i } -- http://bugs.ruby-lang.org/