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.
|