Daniel Ruoso wrote:
> I've just realized we were missing some spots, so remaking the list of
> possibilities
>
> my $a = sub s1 { return a => 1 }
> my $b = sub s2 { return a => 1, b => 2 }
> my $c = sub s3 { return 1, 2, 3, a => 1, b => 2 }
> my $d = sub s4 { return 1 }
> my $e = sub s5 { return 1, 2, 3 }
> my $f = sub s6 { return 1: #< it doesnt matter > }
> my $g = sub s7 { return }
>
> But while writing this email, I've realized that a Capture object is
> supposed to implement both .[] and .{}, so maybe we can just simplify...
Bear in mind that some list objects can use .{} (for customized
indices) as well as .[] (for standard indices). As such, $e ought to
get a List rather than a Capture. And if you're going to go that far,
you might as well go the one extra step and say that $b gets a Hash
rather than a Capture.
But I agree about $a, $c, $d, $f, and $g.
> $g is an undefined Object
> $f is 1
> $d is 1
> $a is a Pair
> everything else is the Capture itself
Of course, that's only a third of the problem. What should people
expect with each of these:
my @a = sub s1 { return a => 1 }
my @b = sub s2 { return a => 1, b => 2 }
my @c = sub s3 { return 1, 2, 3, a => 1, b => 2 }
my @d = sub s4 { return 1 }
my @e = sub s5 { return 1, 2, 3 }
my @f = sub s6 { return 1: }
my @g = sub s7 { return }
my %a = sub s1 { return a => 1 }
my %b = sub s2 { return a => 1, b => 2 }
my %c = sub s3 { return 'a', 1, 'b', 2, a => 1, b => 2 }
my %d = sub s4 { return 1 }
my %e = sub s5 { return 'a', 1, 'b', 2 }
my %f = sub s6 { return 1: }
my %g = sub s7 { return }
Should @a == (), or should @a == ( a => 1 )? Or maybe even @a == ( 'a', 1 )?
Likewise with @b and @f.
Should %e == {} or { a => 1, b => 2 }?
--
Jonathan "Dataweaver" Lang