

Structs and ImmutableStructs - nwjsmith
http://raganwald.com/2014/06/15/immutable-structs.html

======
phunge
I only read as far as "rentAmount.dollars = 600; // => 600" before I got all
ragey. Why would someone think that read-only attributes that silently ignore
assignments are a good idea?

This is a criticism in JS, not in the article. But IMHO most modern
dynamically-typed languages err _way_ to far on the side of permitting (or
ignoring) operations which should raise exceptions. "3" \+ 4 should be an
error, not "34" (JavaScript) or 7 (Perl). ({}).foo should be an error, not
undefined. etc. etc.

It has nothing to do with dynamic typing -- IMHO languages like Scheme and
Python got things right in having a object & type models which have a small,
well-defined set of operations with few rough edges. But somewhere along the
way, "do what I mean" AKA "do the thing that I almost never need but may blow
up in corner cases" became accepted as a good idea. And IMHO it's not.

EDIT: if anyone is interested in ideas around immutability, read up on
functional programming -- specifically read Structure and Interpretation of
Computer Programming, and play around with Scheme. It'll make you a better
programmer regardless of language. Some of the basic ideas from the functional
programming community definitely need to be preserved and disseminated.

~~~
icambron
In strict mode, it does give you an error. So maybe just use that?

~~~
streptomycin
Strict mode is better than nothing, but it doesn't come close to solving all
the problems he mentioned.

------
ape4
One way to make an immutable constant:

    
    
        function rentAmountDollars() {
          return 600;
        }

~~~
i_s
rentAmountDollars = function() { return 601; }

