in reply to Re^3: my Dog $spot;
in thread my Dog $spot;

That's not all that people seem to be forgetting. There's this little thing called "Perl 6" coming up that has a few opinions on the subject of "my Dog $spot" as well:
http://dev.perl.org/perl6/doc/design/syn/S06.html#Value_types http://dev.perl.org/perl6/doc/design/syn/S12.html#Mutating_methods http://dev.perl.org/perl6/doc/design/syn/S02.html#Built-In_Data_Types
I understand that Perl 6 is still not on everyone's horizon yet, and that some people's horizons are farther away than others, and that's all perfectly okay. But it just seems more efficient if people think twice before doing something to Perl 5 that would be incompatible with the direction that Perl 6 is headed.

Replies are listed 'Best First'.
Re^5: my Dog $spot;
by Zaxo (Archbishop) on Jun 08, 2006 at 01:28 UTC

    My Tie::Constrained follow-on is meant to do exactly what the Value Types spec describes: to restrict the types which can be assigned to a variable. I don't imagine Perl 6's internals for my Dog $spot; will be much like Perl 5's attribute- and phash-centered code, but the effect would be the same. In fact, it would be trivial to modify T::C to get enforcement of a seperate returns property.

    The restrictions T::C can impose are quite flexible. By constructing what the pod of the current version calls &validator from &UNIVERSAL::isa or &UNIVERSAL::can, we can leash poor $spot either by type or by capability. Constraints on allowable values are just as easy to set up, and detainting before assignment is available as a bonus.

    I'm the first to admit that Perl 6 doesn't loom large for me, but I have been aware of it.

    Added: I've posted example code for a strong typing/value type Dog at Re: my Dog $spot;. It's as experimental as ever.

    After Compline,
    Zaxo