[#86787] [Ruby trunk Feature#14723] [WIP] sleepy GC — ko1@...

Issue #14723 has been updated by ko1 (Koichi Sasada).

13 messages 2018/05/01
[#86790] Re: [Ruby trunk Feature#14723] [WIP] sleepy GC — Eric Wong <normalperson@...> 2018/05/01

ko1@atdot.net wrote:

[#87095] [Ruby trunk Feature#14767] [PATCH] gc.c: use monotonic counters for objspace_malloc_increase — ko1@...

Issue #14767 has been updated by ko1 (Koichi Sasada).

9 messages 2018/05/17
[#87096] Re: [Ruby trunk Feature#14767] [PATCH] gc.c: use monotonic counters for objspace_malloc_increase — Eric Wong <normalperson@...> 2018/05/17

ko1@atdot.net wrote:

[ruby-core:87128] [Ruby trunk Feature#11161] Proc/Method#rcurry working like curry but in reverse order

From: zverok.offline@...
Date: 2018-05-17 09:49:10 UTC
List: ruby-core #87128
Issue #11161 has been updated by zverok (Victor Shepelev).


> 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.

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

* 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>

In This Thread

Prev Next