3 ms·
I see; that's because I'm this case we'd be fusing the discriminator with the payload. With destructuring pattern match constructs you'd be binding variables t
by ithkuil 6y ago
I see; that's because I'm this case we'd be fusing the discriminator with the payload.
With destructuring pattern match constructs you'd be binding variables to "inner" members of the sum type.
I do understand that. I'm not so sure it's so important, compared to
Just being able to say that a box can contain either A or B or C.
Interfaces are great when you don't care what does a box contain as long as it quacks like a duck.
Sometimes though you need to carry around one out of N types of something and currently all you can do is to use an interface{} and deal with the possibility of a runtime error if somebody breaks the invariant.
- masklinn 6y ago> I do understand that. I'm not so sure it's so important It absolutely is, even more so because of Go's interface. The difficulty of properly discriminating between interfaces extending one another is a reason the FAQ gives for rejecting union types. > compared to Just being able to say that a box can contain either A or B or C. I'd argue that this is by far the lesser use case, and furthermore trivially and completely subsumed by the alternative. > Sometimes though you need to carry around one out of N types of something and currently all you can do is to use an interface{} and deal with the possibility of a runtime error if somebody breaks the invariant. And sometimes you need to carry around one of N values some of which have overlapping contents and currently all you can do is get bent.