Issue #11161 has been updated by shyouhei (Shyouhei Urabe).


zverok (Victor Shepelev) wrote:
> > It needs better (practical) usages to show usefulness of this proposal.
> 
> @akr I believe the code in my comment provides the justification:
> 
> ```ruby
> URLS.
>   map(&Faraday.method(:get).rcurry[some_get_param: 'value']).
>   map(&JSON.method(:parse).rcurry[symbolize_names: true])
> ```
> 
> In general, the idea is: a lot of methods have "options" as their last argument(s), and first argument(s) is the main "subject" of the method. 
> So, when the method is converted to proc, you can "bind" those options with `rcurry`, and then pass it, like in my example above, as a 1-argument proc with some options set.
> 
> The alternative, BTW, would be not currying _last_ arguments, but currying _any_ keyword argument by name.

I then think this might be called something other than currying-related name.  Keyword arguments are not directly FP-oriented concepts.  If you want to make keyword arguments better name it as such; if you want functional programming better we need another example that is more FP.

----------------------------------------
Feature #11161: Proc/Method#rcurry working like curry but in reverse order
https://bugs.ruby-lang.org/issues/11161#change-72148

* Author: Hanmac (Hans Mackowiak)
* Status: Rejected
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
currenty with curry you can only replace elements in order
`#rcurry` should be added to be able to return the last parameter first.


```ruby
def abc(a,b); "a=#{a}, b=#{b}"; end
c= method(:abc).curry

c[1,2] #=> "a=1, b=2" 
c[1][2] #=> "a=1, b=2" 
```

i image rcurry to be like that:
```ruby
def abc(a,b); "a=#{a}, b=#{b}"; end
c= method(:abc).rcurry(2)

c[1,2] #=> "a=2, b=1" 
c[1][2] #=> "a=2, b=1" 
```

because of optional parameters, rcurry might be only be used when giving the arity



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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>