Same-named arguments

2006-08-23 Thread Michael Snoyman

Hi,

I'm just starting with Perl 6.  I was reading through Perl 6 and Parrot
Essentials (finally arrived yesterday from Amazon; very happy) and I was
wondering what would happen if you had a parameter list that included
variables of a different type but the same name (ie, $foo, @foo).  I wrote a
little test script and ran it through pugs.  Here's what I got:

Script:

use v6;

sub mysub($foo, @foo, %foo) {
say Starting mysub;
say Printing scalar;
say $foo;
say Printing array;
say @foo;
say Printing hash;
say %foo;
say Leaving mysub\n;
}

my $foo = 'foo';
my @foo = qw|foo bar|;
my %foo = ( foo = 'bar', foo2 = 'bar2' );

mysub($foo, @foo, %foo);
mysub(:foo($foo), :foo(@foo), :foo(%foo));


Output:

Starting mysub
Printing scalar
foo
Printing array
foobar
Printing hash
foo barfoo2 bar2
Leaving mysub

Starting mysub
Printing scalar
foo
Printing array

Printing hash

Leaving mysub

Just wondering if the language is meant to work that way, or if it's a pugs
feature.

Thanks,
Michael


Re: Same-named arguments

2006-08-23 Thread Carl Mäsak

Juerd (), Michael Snoyman ():

 sub mysub($foo, @foo, %foo) {

I hope this is a compile time failure. If not, I'd expect a warning, at
least.


Why? It looks reasonable IMHO.

// Carl