3 ms·
This is what people mean when they say "make invalid states unrepresentable", languages with union types can easily avoid this problem.
by DanielHB 1y ago
This is what people mean when they say "make invalid states unrepresentable", languages with union types can easily avoid this problem.
- biorach 1y agoIt doesn't sound like they are talking about invalid states, more like they are taking about the kind of thing that in Rust would be represented by `Option<Box<dyn SomeTrait>>` or suchlike. Maybe your point is that in Rust much less ceremony is necessary to avoid hitting a null pointer when doing this. But still, in either language it's easy to end up with hard to follow logic when doing this.
- DanielHB 1y agonot super familiar with Rust but isn't Option<T> just an union type of null and T? I get the language has special semantics for this compared to a union type but it is conceptionally just an union. For example this is something you can do with typescript. function(args: Arguments) { ... } type Arguments = { a: number, b: number } | { a: number, b: string, c: number } the Arguments { a: 1, b: 1, c: 1 } is not representable.
- qzzi 1y agoI'm pretty sure they're talking about reference counting that depends on the arguments, not about optional arguments or invalid argument combinations.
- 0x457 1y ago> not super familiar with Rust but isn't Option<T> just an union type of null and T? Only if there is a niche optimization happens if T is never null, otherwise it's a tagged union. That's not what you're replying to is about.