Procs can be called the same way a hash is with []. But a Hash is not mappable as a Proc.
my_hash=->key{{a: 1,b: 2,c: 3,d: 4,e: 5,f: 6}[key]}my_hash[:a]# => 1[:e,:a,:b,:f,:c,:d].map(&my_hash)# hash is now mappable# => [5, 1, 2, 6, 3, 4]
This seems so straight forward I believe it should be part of the language itself with the .to_proc method call.
This is basically a subset of what I proposed a year ago in #11262. I additionally proposed that Hash also implement call. IMO, it doesn't make much sense to have one without the other: both methods basically say "hey, I'm kinda like a function", and a Hash is basically just a function from keys to elements. I proposed the same thing for Array and Set, which are essentially also just functions from indices to elements (Array) or elements to booleans (Set). However, so far, there has been no interest in that ticket.
This is basically a subset of what I proposed a year ago in #11262.
Commenting on a closed issue won't help much to move an open issue forward. One thing that might help is to split Feature #11262 into smaller issues that can be discussed more easily.
A Hash is basically just a function from keys to elements.
Yes. The most direct case is Hash.new { |h, k| my_function(k) }. :-)