# New Ticket Created by  Aaron Sherman 
# Please include the string:  [perl #128692]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org/Ticket/Display.html?id=128692 >


The core issue is this simple code:

my @a = lazy gather { say 'we actually run' }; sink @a;

Which gives:

OUTPUT«WARNINGS for <tmp>:␤Useless use of @a in sink context (line 1)␤we
actually run␤»

Note that if you insert "quietly" before sink, it still gives the warning,
which is also questionable.

>From the discussion on IRC:


[11:59] <harmil> Speaking of sink, I'm not convinced that the warning for
useless use of iterables in sink context should be a thing. e.g.:
[11:59] <harmil> m: sink ^1000
[11:59] <+camelia> rakudo-moar 86843a: OUTPUT«WARNINGS for <tmp>:␤Useless
use of "^" in expression "^1000" in sink context (line 1)␤»
[12:00] <harmil> I'm explicitly asking for the expansion of the sequence to
be performed and ignored. That's not something that should get a warning,
is it?
[12:00] <jnthn> I don't think it's a warning for iterables in general
[12:00] <jnthn> It's for a useless use of the (known pure) range constructor
[12:01] <jnthn> m: sink 1, 1, *+* ... 8
[12:01] <+camelia> rakudo-moar 86843a: ( no output )
[12:01] <jnthn> Note no warning there
[12:02] <harmil> m: my @foo = 1,1,*+*...8; sink @foo
[12:02] <+camelia> rakudo-moar 86843a: OUTPUT«WARNINGS for <tmp>:␤Useless
use of @foo in sink context (line 1)␤»
[12:03] <jnthn> The assignment to the array is already eager in that case
[12:05] <harmil> jnthn: that's not why we get the warning. I won't do the
version with 8 replaced by * as it never terminates, but it also gives the
warning.
[12:06] <unmatched}> m: sink 1, 1, *+* ... *
[12:06] <+camelia> rakudo-moar 86843a: OUTPUT«Memory allocation failed;
could not allocate 1146880 bytes␤»
[12:06] <jnthn> m: my @foo = 1,1,*+*...8; sink @foo;
[12:06] <+camelia> rakudo-moar 86843a: OUTPUT«WARNINGS for <tmp>:␤Useless
use of @foo in sink context (line 1)␤»
[12:06] <jnthn> But that terminates.
[12:07] <harmil> It just feels to me as if "sink" means "just do it" and
getting a warning that "it" isn't useful just doesn't sit well with me.
YMMV.
[12:08] <jnthn> It's not telling you it isn't useful, it's telling you
there's nothing to do and you wrote dead code.
[12:09] <jnthn> Which the vast majority of the time implies a confused
programmer.
[12:09] <harmil> Except it doesn't know that. @a might be anything, and
iterating over it might be extremely useful (e.g. it might do a full read
from a DB, and I might be timing that)
[12:09] <unmatched}> m: quietly sink ^1000
[12:09] <+camelia> rakudo-moar 86843a: ( no output )
[12:10] <jnthn> m: my @a = lazy gather { say 'we actually run' }; sink @a
[12:10] <+camelia> rakudo-moar 86843a: OUTPUT«WARNINGS for <tmp>:␤Useless
use of @a in sink context (line 1)␤we actually run␤»
[12:10] <harmil> Nice example.
[12:10] <unmatched}> m: my @a = lazy gather { say 'we actually run' };
quietly sink @a
[12:10] <+camelia> rakudo-moar 86843a: OUTPUT«WARNINGS for <tmp>:␤Useless
use of @a in sink context (line 1)␤we actually run␤»
[12:10] <jnthn> Yeah, that one is more interesting, but now I want to know
why the ... one up above didn't hang
[12:10] <unmatched}> m: my @a = lazy gather { say 'we actually run' }; sink
quietly @a
[12:10] <+camelia> rakudo-moar 86843a: OUTPUT«WARNINGS for <tmp>:␤Useless
use of @a in sink context (line 1)␤we actually run␤»
[12:11] <jnthn> oh wait, 'cus I wrote it wrong
[12:11] <unmatched}> Interesting.
[12:11] <jnthn> m: my @foo = 1,1,*+*...*; sink @foo;
[12:11] <+camelia> rakudo-moar 86843a: OUTPUT«(signal SEGV)WARNINGS for
<tmp>:␤Useless use of @foo in sink context (line 1)␤»
[12:11] <jnthn> Yeah, I'd agree on a variable it's rather dubious.
[12:11] <harmil> You get the segv award!
[12:12] <jnthn> On sink ^1000 I think it's spot on
[12:12] <harmil> Yeah, at best ^n is just a weird sort of timing test, and
I could reasonably expect to have to quiet that manually.
[12:12] <jnthn> But yeah, feel free to file it against the @foo case. That
does look a bit bogus
[12:12] <harmil> And I might expect that the optimizer would not be my
friend there

--
Aaron Sherman, M.:
P: 617-440-4332 Google Talk, Email and Google Plus: a...@ajs.com
Toolsmith, developer, gamer and life-long student.

Reply via email to