| ▲ | theptip an hour ago | |
> a single type would have two projections: a value variant (flat, never null, behaving like a primitive) and a reference variant (a box that allows null). Across various iterations this was written as Point.val/Point.ref, and later they experimented with the Point! and Point? syntax. This seems heavier? Having two representations and manually having to refer to .val or .ref? You can argue that the extra flexibility lets you write safer (non-nullable) code but naively it seems more complex at the language level. | ||