develooper Front page | perl.perl6.language | Postings from March 2009

Re: r25807 - docs/Perl6/Spec

Thread Previous | Thread Next
Larry Wall
March 14, 2009 09:27
Re: r25807 - docs/Perl6/Spec
Message ID:
On Thu, Mar 12, 2009 at 06:29:19PM -0700, Jon Lang wrote:
: > +To declare an item that is parsed as a simple term, you must use the
: > +form C<< term:<foo> >>, or some other form of constant declaration such
: > +as an enum declaration.  Such a term never looks for its arguments,
: > +is never considered a list prefix operator, and may not work with
: > +subsequent parentheses because it will be parsed as a function call
: > +instead of the intended term.  (The function in question may or
: > +may not exist.)  For example, C<rand> is a simple term in Perl 6
: > +and does not allow parens, because there is no C<rand()> function
: > +(though there's a C<$n.rand> method).
: So if I were to say:
:     rand $n:
: is the compiler smart enough to notice that trailing colon and
: recognize this as an indirect method call rather than two adjacent
: terms?

No, currently under STD you get:

    Obsolete use of rand(N); in Perl 6 please use N.rand or (1..N).pick instead at (eval) line 1:

: Or would I have to say:
:     rand($n:)
: to get the indirect method call?

That would work, but then why not:


In fact, given that you usually want to integerize anyway, I could
almost argue myself out of supporting the $n.rand form as well...


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About