Heh I just came across this today. It's an interesting optimization,
but does it occur that often? It also precludes the possiblity of action at a
distance / more complicated sort blocks/subroutines doing more than just
sorting...
Peter Makholm wrote:
>
> Trying to do completly stupid stuff with perl I tried to do the
> following:
>
> xyzzy% perl -le 'sort {print "a:$a\tb:$b"; $a cmp $b} qw(5 2 3 4 1)'
> xyzzy%
>
> Somehow the print statement isn't evaled. Playing a little more around
> I tried the following:
>
> xyzzy% perl -le '(sort {print "a:$a\tb:$b"; $a cmp $b} qw(5 2 3 4 1))'
> xyzzy% perl -le '(sort {print "a:$a\tb:$b"; $a cmp $b} qw(5 2 3 4 1))[3]'
> a:2 b:5
> a:3 b:5
> a:3 b:2
> a:4 b:5
> a:4 b:3
> a:1 b:5
> a:1 b:4
> a:1 b:3
> a:1 b:2
> xyzzy% perl -le 'print sort {print "a:$a\tb:$b"; $a cmp $b} qw(5 2 3 4 1)'
> a:2 b:5
> a:3 b:5
> a:3 b:2
> a:4 b:5
> a:4 b:3
> a:1 b:5
> a:1 b:4
> a:1 b:3
> a:1 b:2
> 12345
> xyzzy% perl -le 'print(sort {print "a:$a\tb:$b"; $a cmp $b} qw(5 2 3 4 1))'
> a:2 b:5
> a:3 b:5
> a:3 b:2
> a:4 b:5
> a:4 b:3
> a:1 b:5
> a:1 b:4
> a:1 b:3
> a:1 b:2
> 12345
> xyzzy%
>
> So the question is when does sort just ignores the sideeffects and
> when is they evaled?
>
> I have yet to find a usefull purpose for having side effects in the
> sort statement but that is not the point here.
>
> --
> Emacs er det eneste moderne styresystem der ikke er multitr�det.