On Sat Jul 24 15:19:58 2010, coke wrote:
> On Sat Dec 19 19:02:49 2009, vamped wrote:
> > # yahoo sent the first copy before I finished, arg!
> > # ignore first email
> > #
> > # bug commented in code
> >
> > use v6;
> >
> > class Int is also {
> > method prime() {
> > return True; # actual test algorithm removed for clarity
> > }
> > }
> >
> > # This loop works
> > say "Testing 1,2,3,4,5";
> > for 1,2,3,4,5 {
> > print "$_ is: ";
> > if .prime { say "prime" } else { say "NOT prime" }
> > }
> > say "";
> >
> > # This loop doesn't work
> > # Output:
> > ## 1 is: prime
> > ## 2 is: Method 'prime' not found for invocant of class 'Integer' in
> > Main (file src/gen_setting.pm, line 324)
> > #
> > # fwiw - calling the method with a negative int also produces this
> > error.
> > # what is "class 'Integer'" ? I thought it was class "Int" in Perl
6.
> >
> > say "Testing 1..5";
> > for 1..5 {
> > print "$_ is: ";
> > if .prime { say "prime" } else { say "NOT prime" }
> > }
> >
> Here's a slightly updated code snippet that exhibit a similar problem:
>
> ┗━$━∫ cat foo.p6
> use MONKEY_TYPING;
> augment class Int {
> method prime() {
> return True; # actual test algorithm removed for clarity
> }
> }
>
> say "Testing 1,2,3,4,5";
> for 1,2,3,4,5 {
> print $_.WHAT;
> print " $_ is: ";
> if .prime { say "prime" } else { say "NOT prime" }
> }
> say "Testing 1..5";
> for 1..5 {
> print $_.WHAT;
> print " $_ is: ";
> if .prime { say "prime" } else { say "NOT prime" }
> }
> ┗━$━∫ ./perl6 foo.p6
> Testing 1,2,3,4,5
> Int() 1 is: prime
> Int() 2 is: prime
> Int() 3 is: prime
> Int() 4 is: prime
> Int() 5 is: prime
> Testing 1..5
> Int() 1 is: prime
> Int() 2 is: Method 'prime' not found for invocant of class 'Integer'
> in <anon> at line 21:foo.p6
> in main program body at line 1
Another updated version based on current spec:
use MONKEY_TYPING;
augment class Int {
method prime() {
return True; # actual test algorithm removed for clarity
}
}
say "Testing 1,2,3,4,5";
for 1,2,3,4,5 {
print .WHAT.gist;
print " $_ is: ";
if .prime { say "prime" } else { say "NOT prime" }
}
say "Testing 1..5";
for 1..5 {
print .WHAT.gist;
print " $_ is: ";
if .prime { say "prime" } else { say "NOT prime" }
}
outputs:
Testing 1,2,3,4,5
Int() 1 is: prime
Int() 2 is: prime
Int() 3 is: prime
Int() 4 is: prime
Int() 5 is: prime
Testing 1..5
Int() 1 is: prime
Int() 2 is: prime
Int() 3 is: prime
Int() 4 is: prime
Int() 5 is: prime
... quick, test it before the spec changes again.
--
Will "Coke" Coleda