On Sunday 21 May 2006 03:03, Leopold Toetsch via RT wrote: > Invocants are the first few *positional* arguments used for a function > call, but certainly not arguments inside some kind of flattening > container. > > Imagine you have instead of ... > > > 'foo'( args :flat ) > > end > > .end > > > > .sub 'foo' :multi(Integer) > > ... a :multi(int) / :multi(string). Due to autoboxing the native type > needed for dispatch would be lost. > > Or - you have args with MAYBE_FLAT bit set and some slurpy and > non-slurpy sub variants. Would it first dispatch based on the > flattening aggregate, then again on the contents of it?
That's unfortunate. I thought :flat was like the splatty behavior in Perl 6. I can work around this for now with the C-like call_func1, call_func2, ... call_funcN, but Parrot ought to be more dynamic than C in just about all cases. There ought to be a way to write the Perl 5-ish: sub just_pass_through { my @args = @_; some_other_func( @args ); } Perhaps another attribute on invocation, perhaps :splat or :splatty? -- c