[#36034] [Backport92 - Backport #4651][Open] Bus Error using continuation on x86_64-darwin11.0.0 (Lion) — Erik Michaels-Ober <sferik@...>

17 messages 2011/05/07

[#36058] draft schedule of Ruby 1.9.3 — "Yuki Sonoda (Yugui)" <yugui@...>

-----BEGIN PGP SIGNED MESSAGE-----

18 messages 2011/05/09

[#36131] Re: [ruby-cvs:38172] Ruby:r30989 (trunk): * include/ruby/win32.h: define WIN32 if neither _WIN64 nor WIN32 defined. it forces to use push/pop for pack(4) pragma. — "Yuki Sonoda (Yugui)" <yugui@...>

Hi arton,

7 messages 2011/05/12

[#36156] [Ruby 1.9 - Bug #4683][Open] [PATCH] io.c: copy_stream execute interrupts and retry — Eric Wong <normalperson@...>

11 messages 2011/05/12

[#36316] [Ruby 1.9 - Bug #4731][Open] ruby -S irb fails with mingw/msys vanilla builds — Roger Pack <rogerpack2005@...>

12 messages 2011/05/18

[#36329] [Ruby 1.9 - Bug #4738][Open] gem install fails with "Encoding::ConverterNotFoundError" on windows 7 greek — Ilias Lazaridis <ilias@...>

11 messages 2011/05/19

[#36390] [Ruby 1.9 - Feature #4766][Open] Range#bsearch — Yusuke Endoh <mame@...>

23 messages 2011/05/22

[#36406] 1.8.7 release next month — Urabe Shyouhei <shyouhei@...>

Hello core people,

18 messages 2011/05/23
[#36414] Re: 1.8.7 release next month — Luis Lavena <luislavena@...> 2011/05/23

2011/5/23 Urabe Shyouhei <shyouhei@ruby-lang.org>:

[#36487] Re: 1.8.7 release next month — Urabe Shyouhei <shyouhei@...> 2011/05/26

Hi Luis,

[#36488] Re: 1.8.7 release next month — Hidetoshi NAGAI <nagai@...> 2011/05/26

From: Urabe Shyouhei <shyouhei@ruby-lang.org>

[#36496] Re: 1.8.7 release next month — Hidetoshi NAGAI <nagai@...> 2011/05/26

From: Hidetoshi NAGAI <nagai@ai.kyutech.ac.jp>

[#36712] Re: 1.8.7 release next month — Urabe Shyouhei <shyouhei@...> 2011/06/03

Ping Luis, how's it going?

[#36748] Re: 1.8.7 release next month — Luis Lavena <luislavena@...> 2011/06/05

On Fri, Jun 3, 2011 at 5:18 AM, Urabe Shyouhei <shyouhei@ruby-lang.org> wrote:

[#36434] [Ruby 1.9 - Feature #4774][Open] User Friendly Handling of "Encoding::ConverterNotFoundError" — Lazaridis Ilias <ilias@...>

11 messages 2011/05/24

[#36447] [Ruby 1.9 - Bug #4777][Open] Ruby 1.9.2-p180 ignoring INT, TERM, and QUIT until it receives CONT — Nathan Sobo <nathansobo@...>

10 messages 2011/05/25

[#36559] [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Tom Wardrop <tom@...>

48 messages 2011/05/30
[#36560] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Yukihiro Matsumoto <matz@...> 2011/05/30

Hi,

[#36571] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Anurag Priyam <anurag08priyam@...> 2011/05/30

> Iff 'key': 'value'} means {:key => 'value'} I have no objection.

[#36573] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Yukihiro Matsumoto <matz@...> 2011/05/30

Hi,

[#36578] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Cezary <cezary.baginski@...> 2011/05/30

On Mon, May 30, 2011 at 04:21:32PM +0900, Yukihiro Matsumoto wrote:

[#36580] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Rodrigo Rosenfeld Rosas <rr.rosas@...> 2011/05/30

Em 30-05-2011 07:58, Cezary escreveu:

[#36581] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Michael Edgar <adgar@...> 2011/05/30

Since :"#{abc}" is allowed in Ruby, I imagine that any such substitute syntax would preserve that property.

[#36587] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings — Cezary <cezary.baginski@...> 2011/05/30

On Mon, May 30, 2011 at 09:05:04PM +0900, Michael Edgar wrote:

[ruby-core:36578] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings

From: Cezary <cezary.baginski@...>
Date: 2011-05-30 10:58:58 UTC
List: ruby-core #36578
On Mon, May 30, 2011 at 04:21:32PM +0900, Yukihiro Matsumoto wrote:
> Hi,
>
> In message "Re: [ruby-core:36571] Re: [Ruby 1.9 - Feature #4801][Open] Shorthand Hash Syntax for Strings"
>     on Mon, 30 May 2011 16:12:35 +0900, Anurag Priyam <anurag08priyam@gmail.com> writes:
> |Won't that be misleading? I think the OP wants {'key': 'value'} to
> |mean {'key' => 'value}.
>
> I don't disagree here.  But considering the fact that {key: "value"}
> is a shorthand for {:key => "value"}, {"key": "value"} should be a
> shorthand for {:"key" => "value"}.  Besides that, since it reminds me
> JSON so much, making a: and "a": different could cause more confusion
> than the above misleading.
>
> 							matz.

Misleading, yes - but I think this is only a symptom of a bigger
problem.

In Rails projects I can never be sure if the Hash object I am working
accepts symbols (usually), strings (sometimes) or is a
HashWithIndifferentAccess and doesn't matter until a plugin builds its
own Hash from the contents.

The current Hash behavior is the most generic and flexible, but
unfortunately both the most surprising for novices and least
practical, IMHO.

My thought: warn when mixing string and symbol access in a Hash,
because it is most likely an error. It becomes too easy to
accidentally mix external data (String based hashes, though not
always) with code/language constructs (usually Symbol based hashes).

With a warning, you won't guess the syntax wrong and not know
immediately.

I am wondering: is having strings as keys instead of symbols in a Hash
actually useful? Aside from obscure string/symbol optimization cases?

Another idea would be a Ruby SymbolHash, StringHash accessible
from C API that raises when used incorrectly. And methods for
conversion between the two would probably clean up a lot of code.

HashWithIndifferentAccess is cool, but it is only a workaround to
reduce surprise, not to prevent the root cause of it.

With the new syntax we create an extra point of confusion for novices
based on implementation details:

  1. Will I get a Symbol or a String from this syntax?

  2. Should the resulting Hash I pass to an API contain symbols or
  strings or any? What if it changes in the future? How can I get a
  warning or error if I get this wrong?

1) is a problem only because of 2).

Concentrating on getting both correct will cost more productivity than
the flexibility would allow. The current behavior also keeps Hash from
being more consistent with similar structures in other languages (such
as JSON).

These are just thoughts about revising the current Hash behavior to
reflect the changes in the syntax - for the same reasons as the syntax
additions. I don't feel too competent in this area and I am probably
missing a lot of things.

Sorry for the length.

+1 for consistency with :"foo".

--
Cezary Baginski

In This Thread