On Thu, Jul 22, 2010 at 4:52 PM, Jon Lang <datawea...@gmail.com> wrote:

> I do have to admit that that's awfully clean-looking, but the
> implementation
> > would force a closure in a series to behave differently from a closure
> > anywhere else.
>
> How so?
>

Unlike some of you, I haven't managed to memorize all of the synopses. For
poor dolts like me who have only read some sections once, it would be nice
if you could clarify the more obscure syntax ;-)



> > Without changing closure definitions and without extending the syntax
> any,
> > you could make the series operator do a little bit more introspection
> work
> > and if a parameter is named "index", track an index value and pass it by
> > name, passing any remaining parameters positionally from the previous n
> > values as normal.
>
> ...which differs from my example in several ways, all of which are
> detrimental: it puts the index in among the positional parameters,
>

No, that's not true.

Sure, if you used the syntax I used, then it's allowed to be passed either
way, but since the series operator will always pass it by name, the only
positionals are the remaining parameters (I did test this out before sending
my mail, just to verify that $^x could be passed as :x<...> or as a
positional). More importantly the syntax you used works just as well, and as
far as ... is concerned, there's no substantial difference.

So... what are you suggesting? That any named-only parameter is passed the
index? Or that a named-only parameter called "i" is passed the index? If the
latter, then you're suggesting the same thing as I am, but with a different
name (I prefer the longer name, given the restrictions it places on the
closure).

If you're suggesting that this apply to any named-only parameter, I don't
think that's a good idea. That's even MORE restrictive than what I suggested
(remember, it's usually going to be a closure, defined right there, but even
the Synopsis gives one example of using an existing subroutine).



> meaning that odd things would have to happen if you ever decide to
> use, say, $^i and $^j as your "prior items" parameters;


Why?


> and it locks
> you into a specific name for the index instead of letting you choose
> one of your own liking.
>

Well, true, but you have to have some convention, and a name is a common way
to establish such conventions in a parameter-passing API...

Essentially, my suggestion is this: if the step function's signature
> (or implied signature, in the case of a function with placeholder
> variables) includes any named parameters,


You meant "named only"


> then the index is used as
> the argument corresponding to the first one.


Named only... first... these terms are non-miscible, aren't they? I don't
think named-only parameters have an ordering.

-- 
Aaron Sherman
Email or GTalk: a...@ajs.com
http://www.ajs.com/~ajs

Reply via email to