ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
From: duerst@it.aoyama.ac.jp
To: ruby-core@ruby-lang.org
Subject: [ruby-core:103119] [Ruby master Feature#17472] HashWithIndifferentAccess like Hash extension
Date: Wed, 31 Mar 2021 00:19:29 +0000 (UTC)	[thread overview]
Message-ID: <redmine.journal-91187.20210331001928.5@ruby-lang.org> (raw)
In-Reply-To: redmine.issue-17472.20201226110418.5@ruby-lang.org

Issue #17472 has been updated by duerst (Martin Dürst).


marcandre (Marc-Andre Lafortune) wrote in #note-21:
> duerst (Martin Dürst) wrote in #note-20:
> > Javascript doesn't have symbols in the first place
> 
> Actually, it does (since ES 6): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol

Thanks for the pointer. I haven't fully understood that page, but it seems to me that in JS, the 'uniqueness' aspect is much more important, and there are less similarities with strings than in Ruby. Also, the interface on JS symbols is much smaller than in Ruby, and quite inconvenient except for some very narrow use cases.


joelb (Joel Blum) wrote in #note-22:
> > Actually, it does (since ES 6): https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol
> 
> I find it very unlikely any language will make symbols the default hash keys like Ruby did.

Definitely not JS, see above. But what about various Lisp variants?

> > String are meant for input/output of text. Symbols are identifier for developers.
> 
> Why do you need that distinction?

You don't need that distinction. There is also no need to distinguish integers and floats. Most programming languages make that distinction, but some, including JS, don't (or didn't?).

There is also no strict need to distinguish between strings and numbers. Almost all programming languages have such a distinction, but in Perl (+most shells, awk,...), a string that looks like a number is just a number, and any number is a string. Some languages (e.g. Python, Haskell) provide arrays and tuples, others (e.g. Ruby, JS last time I checked) have only arrays. Some languages distinguish between characters and strings (Ruby up to version 1.8, C), others don't (Ruby from version 1.9,...).

Each choice has its reasons, advantages, and disadvantages. If all programming languages were the same, it would be very boring.

----------------------------------------
Feature #17472: HashWithIndifferentAccess like Hash extension
https://bugs.ruby-lang.org/issues/17472#change-91187

* Author: naruse (Yui NARUSE)
* Status: Open
* Priority: Normal
* Target version: 3.1
----------------------------------------
Rails has [ActiveSupport::HashWithIndifferentAccess](https://api.rubyonrails.org/classes/ActiveSupport/HashWithIndifferentAccess.html), which is widely used in Rails to handle Request, Session, ActionView's form construction, ActiveRecord's DB communication, and so on. It receives String or Symbol and normalize them to fetch the value. But it is implemented with Ruby. If we provide C implementation of that, Rails will gain the performance improvement.

summary of previous discussion: https://github.com/rails/rails/pull/40182#issuecomment-687607812



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

  parent reply	other threads:[~2021-03-31  0:19 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-26 11:04 [ruby-core:101707] [Ruby master Feature#17472] HashWithIndifferentAccess like Hash extension naruse
2020-12-26 11:06 ` [ruby-core:101708] " ronnie
2020-12-26 12:53 ` [ruby-core:101713] " eregontp
2020-12-27 10:44 ` [ruby-core:101737] " mame
2020-12-27 16:14 ` [ruby-core:101747] " eregontp
2020-12-27 17:13 ` [ruby-core:101751] " merch-redmine
2020-12-27 19:09 ` [ruby-core:101755] " daniel
2020-12-27 20:08 ` [ruby-core:101758] " marcandre-ruby-core
2020-12-28  3:41 ` [ruby-core:101767] " naruse
2020-12-28 11:22 ` [ruby-core:101772] " jean.boussier
2020-12-28 11:24 ` [ruby-core:101773] " naruse
2020-12-28 11:53 ` [ruby-core:101774] " eregontp
2020-12-29 20:34 ` [ruby-core:101807] " zverok.offline
2021-01-02 10:53 ` [ruby-core:101877] " nobu
2021-01-17 12:57 ` [ruby-core:102122] " hcatlin
2021-01-23 11:54 ` [ruby-core:102217] " mail
2021-03-27  0:31 ` [ruby-core:103046] " yoelblumenator
2021-03-27  1:03 ` [ruby-core:103048] " marcandre-ruby-core
2021-03-27  6:49 ` [ruby-core:103051] " yoelblumenator
2021-03-28  1:56 ` [ruby-core:103066] " duerst
2021-03-28  3:17 ` [ruby-core:103067] " marcandre-ruby-core
2021-03-28 17:29 ` [ruby-core:103075] " yoelblumenator
2021-03-31  0:19 ` duerst [this message]
2021-04-01 21:49 ` [ruby-core:103161] " lamont
2021-04-02  4:11 ` [ruby-core:103163] " sawadatsuyoshi
2021-04-02 13:36 ` [ruby-core:103182] " yoelblumenator
2021-04-02 13:45 ` [ruby-core:103183] " yoelblumenator
2021-04-02 14:13 ` [ruby-core:103184] " daniel
2021-04-02 19:34 ` [ruby-core:103189] " lamont
2021-04-02 19:42 ` [ruby-core:103190] " lamont
2022-11-20  8:18 ` [ruby-core:110824] " naruse (Yui NARUSE)

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.ruby-lang.org/en/community/mailing-lists/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=redmine.journal-91187.20210331001928.5@ruby-lang.org \
    --to=ruby-core@ruby-lang.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).