On Wed, Nov 19, 2003 at 09:30:15AM -0700, Luke Palmer wrote:
: Piers Cawley writes:
: > All of which means you can wrap it up in a macro and prove Simon's
: > point about what's syntax and what's CP6AN:
: > 
: >    macro unless_all( Block &test is parsed /<perl.expression>/,
: >                      Block &consequence, [EMAIL PROTECTED] ) 
: >      { my $guard = Object.new;
: >        for [EMAIL PROTECTED], $guard 
: >          -> { when $guard { &consequence() ; last }
: >               when &test { last } } }
: > 
: > But I've probably got the signature slightly wrong. 

So far we've only allowed "is parsed" on the macro itself, not on
individual arguments.  Still, that's an interesting idea.

: I think the only thing that's wrong with your signature is that you said
: "macro" instead of "sub".  Well, and &test has to be finessed into an
: executable block somehow, but we're not supposed to know how yet.

Hmm, how about statement:unless_all and modifier:unless_all?

: > Higher Order Functions/Methods/Macros are great aren't they? 
: 
: What a modern thinker!  Use a *function* to do a common task?  *What*
: are you talking about!?  :-)

Well, you mayn't put "is parsed" on a function.  Macros have special
rules to enforce lexical scoping of syntax munging, since the syntax
must be known when the call is parsed.  A function call can be parsed
without such special knowledge.

Larry

Reply via email to