Re: Indirect objects, adverbial arguments and whitespace

2007-10-08 Thread Dr.Ruud
Markus Laker schreef:

> If I've got this right:
> 
> mangle $foo :a;# mangle($foo, a => 1);
> mangle $foo: a;# $foo.mangle(a());
> 
> So these --
> 
> mangle $foo:a;
> mangle $foo : a;
> 
> are ambiguous and, as far as I can tell from the synopses, undefined.
> So what's the rule: that indirect-object colon needs whitespace after
> but not before, and adverbial colon needs whitespace before but not
> after? 
> 
> The reason I ask is that I'm knocking up an intro to Perl 6 for C and
> C++ programmers.  I expect some of Perl 6's whitespace rules to trip
> up people used to C++ (as they have me, in my clumsy attempts with
> Pugs), and I'd like to summarise all the whitespace dwimmery in one
> place. 

We were making fun of this:
    

-- 
Affijn, Ruud

"Gewoon is een tijger."


Re: Indirect objects, adverbial arguments and whitespace

2007-10-07 Thread Luke Palmer
On 10/7/07, Mark J. Reed <[EMAIL PROTECTED]> wrote:
> I would argue for disallowing the all-jammed-together case, lest we
> run into longest-match arguments where "foobar:baz" is "foobar: baz"
> but "foo:barbaz" is "foo :barbaz".  Yuck.

Uh, that doesn't make sense.  Longest match arguments are leftmost, so
if you consider the indirect object : to be part of the variable
before it (I wouldn't), then you would always get the "foobar: baz" /
"foo: barbaz" interpretation.

I don't know about the all jammed together case, but mangle $foo : a
is not ambiguous because : a is not a pair: there is no whitespace
allowed between the colon and the name on that style of pair.

Luke


Re: Indirect objects, adverbial arguments and whitespace

2007-10-07 Thread Mark J. Reed
Visually, I interpret ":a" as a token unto itself, though that's
probably Ruby's fault.  That interpretation would man that the
dual-whitespace version would have to be an indirect object.

I would argue for disallowing the all-jammed-together case, lest we
run into longest-match arguments where "foobar:baz" is "foobar: baz"
but "foo:barbaz" is "foo :barbaz".  Yuck.


On 7 Oct 2007 12:22:56 -, Markus Laker
<[EMAIL PROTECTED]> wrote:
> If I've got this right:
>
> mangle $foo :a;# mangle($foo, a => 1);
> mangle $foo: a;# $foo.mangle(a());
>
> So these --
>
> mangle $foo:a;
> mangle $foo : a;
>
> are ambiguous and, as far as I can tell from the synopses, undefined.  So
> what's the rule: that indirect-object colon needs whitespace after but not
> before, and adverbial colon needs whitespace before but not after?
>
> The reason I ask is that I'm knocking up an intro to Perl 6 for C and C++
> programmers.  I expect some of Perl 6's whitespace rules to trip up people
> used to C++ (as they have me, in my clumsy attempts with Pugs), and I'd
> like to summarise all the whitespace dwimmery in one place.
>
> Many thanks,
>
> Markus
>


-- 
Mark J. Reed <[EMAIL PROTECTED]>