Re: Indirect objects, adverbial arguments and whitespace
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: news:[EMAIL PROTECTED] -- Affijn, Ruud Gewoon is een tijger.
Indirect objects, adverbial arguments and whitespace
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
Re: Indirect objects, adverbial arguments and whitespace
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]
Re: Indirect objects, adverbial arguments and whitespace
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