Issue #7939 has been reported by drKreso (Kresimir Bojcic).

----------------------------------------
Feature #7939: Alternative curry function creation
https://bugs.ruby-lang.org/issues/7939

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/