Raku/old-design-docs

S02: ordering of hash entries in the .perl method

dwarring opened this issue · 4 comments

S02 currently has no opinion on whether the .perl method should sort hash entries or leave them in random order. Rakudo implementations currently randomize entries, e.g.:

% perl6-m -e'say { :a(10), :b(20), :c(30) }.perl'
{"c" => 30, "a" => 10, "b" => 20}
% perl6-m -e'say { :a(10), :b(20), :c(30) }.perl'
{"a" => 10, "b" => 20, "c" => 30}

This should maybe be explicitly stated.

I'm in the habit of using .perl to dump and view data. I'd find sorted entries easier to work with, in terms of viewing, grepping etc.

Is this good? For big hashes it will steal time. Anyway hashes are not ordered by definition. I would endorse that .gist method should short keys somehow but not .perl

Note that, in the latest Rakudo, hashes appear to be ordered.

% perl6-m --version
This is perl6 version 2015.04-204-ga040b1a built on MoarVM version 2015.04-62-g052aca0
% perl6-m -e'say { :a(10), :b(20), :c(30) }.perl'
{:a(10), :b(20), :c(30)}
%
% perl6-m -e'say { :a(10), :b(20), :c(30) }.perl'
{:a(10), :b(20), :c(30)}

They are sorted - see resolved ticket https://rt.perl.org/Ticket/Display.html?id=124148

Hashes are no longer sorted