in reply to Re: Re: Re: Recursive map Design Questions
in thread Recursive map Design Questions

demerphq++; I mostly agree with what you've said. But Perl already disallows some similar things so I'd really like to make blessing into things like '', '0', 'HASH', and "\0" illegal just to put some things to rest.

I'm quite tired of hearing about how simple code doesn't work in all cases and the resulting discussions of things-that-should-never-be-done that would break the simple code and then people replacing really simple code with really complicated code in order to deal with this nonsense.

Now, this will only fix one of the problems with ref($h) eq 'HASH', but there are other improvements that fix the other problems [UNIVERSAL::isa() and Scalar::Utils].

                - tye

Replies are listed 'Best First'.
Re: Re^4: Recursive map Design Questions
by demerphq (Chancellor) on Oct 03, 2003 at 23:45 UTC

    I'd really like to make blessing into things like '', '0', 'HASH', and "\0" illegal just to put some things to rest.

    I'll agree with you with regard to everything but 'HASH' and other type specific designations. Since ref was so ill-conceived from the beginning there will always be code out there that gets nailed by bad coding decisions. Being able to bless a reference so that it appears to crude analysis to be of a different type than than it really is can be a useful workaround. It can be used to deal with bad coding such as ref $obj eq 'HASH' when you want to pass in a blessed hash, or a couple of other tricks like things with overriden deref operators.

    Truth be told however, I would almost argue that blessed and reftype should be added to the perl core (without requiring Scalar::Utils) and ref deprecated. I would also make reftype take an optional second argument turning it into a type specific ISA.

    I agree that its a real pitty that ref is so poorly thought out. But theres not much to be done about it now.


    ---
    demerphq

      First they ignore you, then they laugh at you, then they fight you, then you win.
      -- Gandhi


      Yes, I'd love to see ref deprecated, replacing it with build-in versions of reftype() and blessed() [and I have no reservations about this -- I really think that is exactly what should be done, the sooner the better]. And that should probably be the first step before making it illegal to bless into 'HASH' -- though it feels wrong to use the flaw to justify not fixing the flaw (:

                      - tye