Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer
 
PerlMonks  

Re^9: Shouldn't references be readonly? (updated)

by LanX (Sage)
on Aug 09, 2020 at 12:46 UTC ( #11120521=note: print w/replies, xml ) Need Help??


in reply to Re^8: Shouldn't references be readonly? (updated)
in thread Shouldn't LITERAL references be readonly? (updated)

My point is about potential problems in backwards compatibility.

A transformation of a string or a number into another string or number is common, BUT the transformation of refs is impossible.

Hence it's far more likely that legacy code will break if something like $_++ became illegal for an aliased input like 3+4 .

Same code for refs wouldn't make sense at all.

I can't come up with more intuitive examples, but I'm sure those exist.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery

Replies are listed 'Best First'.
Re^10: Shouldn't references be readonly? (updated)
by ikegami (Pope) on Aug 09, 2020 at 21:19 UTC

    Put differently, you want to prevent transformation of references, but using a completely ineffective tool to achieve it. Making references read-only doesn't prevent transformation.

    Preventing transformation (stringification, numification, but not booleanification) of references might be a good idea.

    Issues:

    • Intentional uses of $ref+0 would have to be replaced by refaddr($ref).
    • Intentional uses of "$ref" would have to be replaced.
    • Programs that mostly function will start dying instead.

    Benefits:

    • Catch some bad code (But what code wouldn't already be obviously wrong?)

      See also stringification, which allows you to say:

      no stringification;

      and forbids

      "$ref" # stringify $ref . "foo" # concat lc $ref lcfirst $ref uc $ref ucfirst $ref quotemeta $ref

        noice.

        There are only dev releases of the module. If this is something you (the reader) is interested in, perhaps you could contact the author to encourage a proper release or assist with it.

Re^10: Shouldn't references be readonly? (updated)
by ikegami (Pope) on Aug 09, 2020 at 21:07 UTC

    Since making the scalar read-only doesn't prevent transformation (only assignment), there is no backwards compatibility issue relating to transformation.

    Hence it's far more likely that legacy code will break if something like $_++ became illegal for an aliased input like 3+4 .

    And that's exactly what the change is suppose to prevent. What's the point of making the change if it doesn't prevent exactly what it's suppose to be preventing!

    If you say there's no point in preventing $_ = ... when $_ is an unassigned string, then there's no point in preventing it when it's an unassigned reference.

      I'm giving up.

      I once vowed to avoid diving deeper than Re^10 and here we are! :)

      Cheers Rolf
      (addicted to the Perl Programming Language :)
      Wikisyntax for the Monastery

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://11120521]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (6)
As of 2021-12-01 16:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    R or B?



    Results (13 votes). Check out past polls.

    Notices?