> I see that Int/Num error, What platform are you using? I believe William Michels is on OSX.
> and also would like an explanation as to why "my > Int $y" isn't re-initialized to Any each time through this loop So the question is if "-n" is exactly equivalent to wrapping the given code in a loop, why doesn't "my $y" reinitialize the variable each time through, zeroing it out each time. I would speculate that this was special-cased in some way because otherwise -n wouldn't seem as useful, because of the design decision to turn on strict by default even for one-liners. (As I remember it, the original idea was to leave strict off with a -e invocation.) So, this is an error: seq 10 | perl6 -ne '$y += $_; END { print $y; }' Variable '$y' is not declared Though this works: seq 10 | perl6 -ne 'no strict; $y += $_; END { print $y; }' 55 As does: seq 10 | perl6 -ne 'our $y += $_; END { print $y; }' seq 10 | perl6 -ne 'state $y += $_; END { print $y; }' seq 10 | perl6 -ne 'state Int $y += $_; END { print $y; }' I think it's interesting that this is an error, though I don't see why (yet another detail I need to look up some time): seq 10 | perl6 -ne 'our Int $y += $_; END { print $y; }' Cannot put a type constraint on an 'our'-scoped variable On 9/26/19, yary <not....@gmail.com> wrote: > I see that Int/Num error, and also would like an explanation as to why "my > Int $y" isn't re-initialized to Any each time through this loop > > $ seq 1000000 | perl6 -ne 'my Int $y += $_; END { print $y; }' > > Type check failed in assignment to $y; expected Int but got Num > (500000500000e0) > > in block <unit> at -e line 1 > > $ perl6 --version > > This is Rakudo Star version 2019.03.1 built on MoarVM version 2019.03 > > implementing Perl 6.d. > > -y > > > On Thu, Sep 26, 2019 at 2:24 PM William Michels via perl6-users < > perl6-us...@perl.org> wrote: > >> Thank you, Andy and Joseph! >> >> >> On Thu, Sep 26, 2019 at 8:47 AM Andy Bach <andy_b...@wiwb.uscourts.gov> >> wrote: >> > >> > > Still, it's just "works for me": >> > >> > seq 1000000 | time perl6 -ne 'my $y += $_; END { print $y; }' >> > >> > I think that's still the wrong one - your missing the "Int" >> > $ seq 1000000 | perl6 -ne 'my Int $y += $_; END { print $y; }' >> > 500000500000 >> > >> > though that works here, admittedly, my p6 is sort old >> > This is Rakudo version 2018.03 built on MoarVM version 2018.03 >> > implementing Perl 6.c. >> > >> > I'm a little puzzled, I'd've thought the loop around the 'my Int $y' >> would redeclare a local $y each time. Instead it behaves like: >> > $ time perl6 -e 'my Int $y = 0;for ( 1 .. 1000000) { $y += $_} ; say >> $y; ' >> > >> > (which is signficantly faster ;-) >> > 500000500000 >> > real 0m1.229s >> > user 0m1.254s >> > sys 0m0.040s >> > >> > ) >> > ________________________________ >> > From: Joseph Brenner <doom...@gmail.com> >> > Sent: Wednesday, September 25, 2019 11:13 PM >> > To: William Michels <w...@caa.columbia.edu> >> > Cc: Marc Chantreux <e...@phear.org>; Vittore Scolari < >> vittore.scol...@gmail.com>; Elizabeth Mattijsen <l...@dijkmat.nl>; perl6 < >> perl6-us...@perl.org> >> > Subject: Re: anything faster than say [+] lines? >> > >> > Oh, wait. I tried the wrong one-liner. Still, it's just "works for >> > me": >> > >> > seq 1000000 | time perl6 -ne 'my $y += $_; END { print $y; }' >> > 50000050000029.29user 0.06system 0:28.41elapsed 103%CPU >> > (0avgtext+0avgdata 76196maxresident)k >> > 63328inputs+0outputs (32major+15588minor)pagefaults 0swaps >> > >> > >> > >> > On 9/25/19, Joseph Brenner <doom...@gmail.com> wrote: >> > > I just gave that one-liner a try, but I didn't see that error: >> > > >> > >> seq 1000000 | time perl6 -e 'say [+] lines' >> > > 500000500000 >> > > 28.70user 0.07system 0:28.29elapsed 101%CPU (0avgtext+0avgdata >> > > 74188maxresident)k >> > > 63424inputs+0outputs (32major+15409minor)pagefaults 0swaps >> > > >> > > >> > > perl6 --version >> > > This is Rakudo Star version 2019.03.1 built on MoarVM version 2019.03 >> > > implementing Perl 6.d. >> > > >> > > uname -a >> > > Linux fandango 4.9.0-8-686 #1 SMP Debian 4.9.144-3 (2019-02-02) i686 >> > > GNU/Linux >> > > >> > > >> > > >> > > On 9/24/19, William Michels via perl6-users <perl6-us...@perl.org> >> wrote: >> > >> I'm seeing a strange error. I started trying out Marc's original >> > >> code, >> > >> then tried to adapt some Perl5-type solutions from SO to see how >> > >> they >> > >> performed when re-written as Perl6. One thing I wanted to explicitly >> > >> test was how restricting to an "Int" type affected performance. >> > >> >> > >> However, I found a surprising result: a sequence of one-million Ints >> > >> throws an error, but a sequence of 999,999 Ints does not: >> > >> >> > >>> mbook:~ homedir$ seq 1000000 | time perl6 -e 'say [+] lines' >> > >>> 500000500000 >> > >>> 4.81 real 4.86 user 0.20 sys >> > >>> mbook:~ homedir$ seq 1000000 | time perl6 -ne 'my $y += $_; END { >> print >> > >>> $y; }' >> > >>> 500000500000 4.88 real 5.06 user 0.19 sys >> > >>> mbook:~ homedir$ seq 1000000 | time perl6 -ne 'my Int $y += $_; END >> > >>> { >> > >>> print $y; }' >> > >>> Type check failed in assignment to $y; expected Int but got Num >> > >>> (500000500000e0) >> > >>> in block <unit> at -e line 1 >> > >>> 499999500000 4.77 real 4.97 user 0.19 sys >> > >>> mbook:~ homedir$ seq 999999 | time perl6 -ne 'my Int $y += $_; END >> > >>> { >> > >>> print >> > >>> $y; }' >> > >>> 499999500000 4.86 real 5.05 user 0.19 sys >> > >>> mbook:~ homedir$ perl6 -v >> > >>> This is Rakudo version 2019.07.1 built on MoarVM version 2019.07.1 >> > >>> implementing Perl 6.d. >> > >>> mbook:~ homedir$ >> > >> >> > >> Any comments or explanation appreciated, >> > >> >> > >> Best Regards, Bill. >> > >> >> > >> >> > >> >> > >> >> > >> On Tue, Sep 24, 2019 at 1:59 AM Marc Chantreux <e...@phear.org> >> wrote: >> > >>> >> > >>> hello, >> > >>> >> > >>> > > > > nice ... but when x is ~ 75440 (not always), there is a >> problem >> > >>> > > > What is x here? >> > >>> > > sorry. x is the arg of seq (number of lines). >> > >>> > That never happens on my laptop >> > >>> >> > >>> well.. so it's a problem with my station. nevermind :) >> > >>> >> > >>> thanks again for helping >> > >>> marc >> > >> >> > > >> >