Issue #6817 has been updated by Michael Kohl.


Koichi Sasada wrote: 
> Basically, I like this proposal.
> But I'm not sure this notation can be acceptable.

In that case, how about making Symbol#to_proc accept additional arguments?

(1..3).map(:+, 2) 

The syntax would be very straightforward, but it doesn't go well with the current implementation of Symbol#to_proc's proc cache. Also this does go away a bit from the original point of partial application, though tbh this sort of scenario is what I mostly had in mind anyway.

----------------------------------------
Feature #6817: Partial application
https://bugs.ruby-lang.org/issues/6817#change-48163

* Author: Michael Kohl
* Status: Open
* Priority: Normal
* Assignee: Yukihiro Matsumoto
* Category: core
* Target version: next minor
----------------------------------------
=begin

I know that what I propose here is a significant change to Ruby, but it's part of my ongoing quest to get some more functional programming features into Ruby (see also #4539 and #6373).

I was wondering if  it would make sense to maybe introduce partial application to Ruby?  So that instead of 

 (1..3).map { |i| i + 2 }

or the somewhat unwieldy

 (1..3).map(&2.method(:+))

one could just write

 (1..3).map(&2.+) 

which I think has a quite rubyish feel to it. I have a POC implementation in Ruby (I tried it with various Fixnum methods) over at my blog (((<URL:http://citizen428.net/blog/2012/07/30/ruby-left-section-for-infix-operators>))), but that was just a quick hack and obviously I don't want to monkey-patch every method with arity 1, but it was a  nice way of exploring possible syntax.
=end



-- 
https://bugs.ruby-lang.org/