Am 09.09.2011 12:44, schrieb Carl Mäsak:
Non-rw attributes, non-rw parameters, and non-rw return values all
share the same mechanism. Fine. Makes sense.
Non-rw-ness in this case should be "all the way", not one level down.

(I hope I didn't change the meaning by stripping parts of your quote).

Woah there. Every routine that returns something mutable would have to indicate that in its signature, and there are a lot of routines that return mutable objects, or lists thereof (map, sort, grep, first, constructors of ref types, ...)

That would basically move Perl 6 to a level where you have to declare mutability in an almost Haskell-ish way.

I think we should consider the implications of immutability-all-the-way-down before we jump to any conclusions. In particular list cases where typical Perl 5 code fails when ported to Perl 6.

Basically any code that deals with file handles, database handles, statement handles etc. (all mutable objects) would need to take care while passing them around, because a single non-rw return would render them immutable, and thus useless.

I used to be in favor of the immutability approach, but the more I think about its effect on actual code I've written in the past, the more I get scared by the thought.


Reply via email to