in reply to Re^3: Parrot, threads & fears for the future.
in thread Parrot, threads & fears for the future.
In Scheme, all I have to do is signal that a part of my code has no side effects and then my macros can do things like parallelise all the arguments to each function call*. I don't have to think about it any further.
I guess that's an ability that could be build into Perl6 (or even Perl5). That is, signalling that there are no side-effects.
The interesting case is of course, what if the programmer tells the compiler that there are no side-effects, but in reality, there are? The programmer could be deliberately lying, or just not knowing the internals of the language implementation well enough to know (or it could be that in the implementation (aka compiler/interpreter/run-time environment) the programmer developed the program on, there were no side-effects, but there are in the implementation the program is actually run on).
The idea of having parts that are side-effect free available for parallellization is great - but I rather have the compiler determine this for me than the programmer. (Of course, the compiler cannot determine this always, or else one could solve the halting problem. Unless the language is side-effect free to begin with.)