Issue #5008 has been updated by Suraj Kurapati.


=begin

Here is a comparison of core data structure API for your reference:
 
 |           |   Kernel    |  Implicit  |  Explicit  |  NilClass   |
 |   Class   |   method    | conversion | conversion | conversion  |
 | --------- | ----------- | ---------- | ---------- | ----------- |
 |  String   |  String()   |   to_str   |    to_s    |  nil.to_s   |
 |  Integer  |  Integer()  |   to_int   |    to_i    |  nil.to_i   |
 |   Float   |   Float()   |  MISSING   |    to_f    |  nil.to_f   |
 |   Array   |   Array()   |   to_ary   |    to_a    |  nil.to_a   |
 |   Hash    |   MISSING   |  to_hash   |  MISSING   |   MISSING   |

=end
----------------------------------------
Feature #5008: Equal rights for Hash (like Array, String, Integer, Float)
http://redmine.ruby-lang.org/issues/5008

Author: Suraj Kurapati
Status: Assigned
Priority: Normal
Assignee: Yukihiro Matsumoto
Category: 
Target version: 


=begin
Hello,

I am using ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux].

Although Ruby has a rich set of primitive data types and structures, 
the Hash seems neglected in the Ruby API in comparison to its peers:

* String: Object#to_s by API
* Integer: Kernel#Integer by API and Object#to_i by convention
* Float: Kernel#Float by API and Object#to_f by convention
* Array: Kernel#Array by API and Object#to_a by convention
* Hash: Kernel#Hash (issue #3131) and Object#to_hash by convention

In particular, the Hash seems neglected by the Ruby API because:

* Its convention method (#to_hash) is longer than one character (#to_h).
* It did not have a Kernel-level method until recently (see issue #3131).
* It has no methods for conversion from NilClass, unlike #to_s, a, i, f.

Please rectify this un-orthogonality and grant Hash equal rights by:

* Establish #to_h as the convention method for converting objects into Hash.
* Add Kernel#Hash method for converting objects into Hash strictly (see issue #3131).
* Define NilClass#to_h so that we can convert nil into an empty Hash.

Thanks for your consideration.
=end


-- 
http://redmine.ruby-lang.org