Three contrasting implementations
Problem 1: if R&T are objects, what happesn to builtin methods?
a ~ b, where a = {}, b = {}, will be true
proposal: Change the semantics, to check for immutability
Proposal 2: Special casing builtin methods to treat records and tuples specially, feels wrong. We should instead introduce new methods that check deep equality, as they are functionally different.
proposal 3:
Counter idea: If records and tuples are primitives, then one way we can implement deep equality is by casting to a record or a tuple for various complex types. This is equivalent to
Atomized objects are extractions of the observable surface area of an object. They are not equal to their source object, they are an immutable representation of their detectable surface area.
In this case - The R&T syntax becomes a sugar for atomized objects.
Example with proxies:
What we introduce is not immutability, but object identities tied to structure.
https://github.com/PapenfussLab/bionix
rough syntax
Notes:
The shim so far