Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"

Re^2: RFC: Implicit Parallelization Pragma

by mauke (Novice)
on Jan 27, 2005 at 23:52 UTC ( #425815=note: print w/replies, xml ) Need Help??

in reply to Re: RFC: Implicit Parallelization Pragma
in thread RFC: Implicit Parallelization Pragma

Indeed. And in Perl, this is very, very hard. How hard? Well, your own example fails the test. Even the map {length} @array may cause a side-effect.

Here's another example:

use warnings; use strict; { package Tmp; use overload '""' => \&str, fallback => 1; sub c { bless [$_[1]], $_[0] } sub str { print "Hello, $_[0][0]\n"; "." x rand 10 } } my @strs = map Tmp->c($_), qw[foo bar baz]; my @str_lengths = map { length } @strs; print "$_\n" for @str_lengths;

As you can see, this time each call to length prints something to STDOUT and calls rand, which modifies global state. This is another reason why perl can't optimize such a loop in the general case: it's very hard to prove that @strs isn't tied or contains objects with overloaded stringification.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://425815]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others scrutinizing the Monastery: (14)
As of 2016-10-27 15:01 GMT
Find Nodes?
    Voting Booth?
    How many different varieties (color, size, etc) of socks do you have in your sock drawer?

    Results (365 votes). Check out past polls.