On Fri, Dec 22, 2006 at 09:16:08AM -0600, Peter da Silva wrote: > On Dec 22, 2006, at 8:10 AM, Abigail wrote: > >In Perl6: > > > > print sqrt(9) + 7; # Prints 10. > > print sqrt (9) + 7; # Prints 4. > > Holy Mary's Abscessed Teeth. > > Is this because whitespace is significant in the parse tree, or because > sqrt( is a token? Or don't I want to know?
Worse.
The space influences precedence.
Fully parenthesized,
the former is read as: ((sqrt(9)) + (7))
the latter is read as: (sqrt((9) + (7)))
Now, the other example I gave (%hash {code} vs %hash{code}) is a parsing
issue. Any parenthesized block preceeded by a space is a coderef that is
executed directly. More or less a short hand for 'sub {code} -> ()'.
But without the space, well, then it can be an index in a hash.
Now, you might wonder what was gained by having this monster. It enables
you to leave of the parenthesis in an if statement. Perl goes from a
formfree language to a language with syntactically whitespace for the
benefit of making parenthesis around a conditional optional.
Woopy.
Abigail
(So, what's 'grep {/foo/} @bar;' meaning in perl6?)
pgpOMfBXNwnA6.pgp
Description: PGP signature
