From: Graham Barr [mailto:[EMAIL PROTECTED]]
> On Mon, Aug 13, 2001 at 04:38:43PM -0700, Nathan Wiger wrote:
> > And allow flexible calling styles. For example, you might say:
> >
> > # import args() for argument validation
> > use Module::Interface qw/args/;
> >
> > sub my_func (@) {
> > my %args = args({ positional => [qw/name email
> > phone/] }, @_);
> > }
> >
> > Which would allow you to call your function two different ways:
> >
> > my_func($name, $email, $phone);
> > my_func(name => $name, email => $email, phone => $phone);
>
> This is the king of thing that CGI does, and IMO is exactly
> what we don't want.
>
> There should be ONE calling style for each sub/method.
> Allowing this _will_ cause different people to use different
> calling styles and also possible confusion.
TOW of Perl?
What about RFC128? http://dev.perl.org/rfc/128.html
Subroutines: Extend subroutine contexts to
include name parameters and lazy arguments
It gives us a cleaner way to mix and match order dependant and named
parameter lists. Not to mention the potential for optimization hints,
parameter type checking and constraints (no auto-vivication), lazy
evaluation, etc.
I don't have the experience to make well balanced judgements in language and
library design, but I would hope that RFC128 style function signatures would
be required. I'm sure modules which prioritize on performance would chose
ordered parameter lists, but higher level ones would benefit from a heavier
reliance on named parameters. And if people'd RTFM on RFC128, perhaps
calling style confusion would be minimal.