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

Re^5: Shouldn't references be readonly?

by jcb (Vicar)
on Aug 05, 2020 at 22:13 UTC ( #11120376=note: print w/replies, xml ) Need Help??


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

Perl is not JS. Does JS even have references as first-class values like Perl does?

I just tested it and was surprised that overwriting a reference to a literal number or string through $_ in map raises an error, even if multiple layers of references are involved, but overwriting a reference (even through metareferences) to an array is fine.

Devel::Peek reveals that the READONLY flag is apparently copied by the \ operator. If you start with a literal value, such as 1 or "abc" (which has the READONLY flag) the references are similarly seen to be read-only values, but if you start with an anonymous aggregate, which is mutable, the references are mutable. I would argue that, if there is a bug here, it is that references to constants, which should themselves (the references) be mutable, are incorrectly marked read-only.

Replies are listed 'Best First'.
Re^6: Shouldn't references be readonly?
by LanX (Cardinal) on Aug 05, 2020 at 22:21 UTC
    > Perl is not JS. Does JS even have references as first-class values like Perl does?

    All objects are references in JS and implicitly dereferenced. Passing an object means passing the reference.

    I doubt that JS has a way to reveal the counter printed like in Perl, so the use of references is transparently hidden.

    But the semantics are the same, and IIRC does ECMA explicitly name the concept of "reference".

    And yes, JS has no reference constructor like \ but you can compare objects for identity with ===

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

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (6)
As of 2020-12-02 13:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    How often do you use taint mode?





    Results (41 votes). Check out past polls.

    Notices?