sub factorial (Int $n is topic) {
return 1 when 0;
return $n * factorial $n;
}
hmm, could we write...
sub foo (Class $self is topic: +$foo, +$bar) {
.method;
}
to avoid having to use ./
?
Cheers,
Carl
Carl Franks [EMAIL PROTECTED] writes:
sub factorial (Int $n is topic) {
return 1 when 0;
return $n * factorial $n;
}
hmm, could we write...
sub foo (Class $self is topic: +$foo, +$bar) {
.method;
}
to avoid having to use ./
?
Yay!
Carl Franks skribis 2005-06-21 8:54 (+0100):
hmm, could we write...
sub foo (Class $self is topic: +$foo, +$bar) {
.method;
}
For such a short method, perhaps just using $_ directly makes more
sense:
sub foo (Class $_: +$foo, +$bar) {
.method;
}
to avoid having to use ./
On Fri, Jun 17, 2005 at 04:41:53AM +0100, Piers Cawley wrote:
: Suppose I have a simple, single argument recursive function:
:
: sub factorial (Int $n) {
: return 1 if $n == 0;
: return $n * factorial $n;
: }
:
: Can I write that as:
:
: sub factorial (Int $n:) {
: return 1
Larry Wall wrote:
Can anyone think of a good reason not to topicalize the first arg
of ordinary subs these days? Other than subtle encouragement toward
use of multis? I suppose it also makes refactoring between subs and
methods more difficult in the case where you're adding an invocant,
Larry wrote:
: Can I write that as:
:
: sub factorial (Int $n:) {
: return 1 when 0;
: return $n * factorial $n;
: }
As it stands right now, no. Ordinary subs do not allow invocants.
Arguably, it'd be more consistent if ordinary subs always topicalized
their first argument.
Suppose I have a simple, single argument recursive function:
sub factorial (Int $n) {
return 1 if $n == 0;
return $n * factorial $n;
}
Can I write that as:
sub factorial (Int $n:) {
return 1 when 0;
return $n * factorial $n;
}
NB. Yes, I know it's a pathological