Re: Perl 6 modules plan
[email protected] (Nathan Wiger) Mon, 13 Aug 2001 16:38:43 -0700
| Newsgroups | perl.perl6.stdlib |
|---|---|
| Organization | Sun Microsystems |
| Message-ID | <[email protected]> |
Kirrily Robert wrote: > > I also think there's too much overhead in learning (and remembering) > each library's quirks. My most common mistakes when using CPAN or core > modules occur when the modules have inconsistent interfaces and I forget > which ones take hashes and which take hashrefs, etc. Sure a quick RTFM > sorts it out, but it's still annoying. Absolutely. I've tossed around on [email protected] the idea of a "Module::Interface" that would provide a common interface for module authors, but nobody's bitten really. The idea would be to provide 2-3 very common, drop-in argument handlers so people don't have to write buggy custom code. It would handle common stuff like: $obj = Class->new($required, $args, {opt => val, opt => val}); $job = param(-name => 'job'); 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); Of course, you wouldn't have to specify the "positional" parameter, this would just be one of several options. In addition, I've thought that you could create a clean new() and other OO function implementations and let people say: use base 'Module::Interface'; To get rolling, with the understanding that their object would then have things predefined in a certain way, that would hopefully get 80% of the cases. Thoughts? If there's interest I can whip this up and stick it on CPAN. -Nate