Re:dotNET (OK, C#) gets union types
by goto11 on Saturday May 23, 2026 @07:29PM
(#48252647)
You cant have a `type Foo = String | Strimg` in Haskell either.
[ Parent
| on HN ]
Re:dotNET (OK, C#) gets union types
by bertylicious on Saturday May 23, 2026 @11:12PM
(#48253982)
But you can have an `Either String String` which is what GP was talking about.
Re:dotNET (OK, C#) gets union types
by bertylicious on Sunday May 24, 2026 @02:54AM
(#48255092)
My mistake. I see my oversight now. `Either String String` is not equivalent to `String | String`, but to `Left String | Right String`. The same must be done for the C# version.
Yes, you must have individual constructors for the left and right cases in order to distinguish them. In C# you would use two distinct record types for this. Haskell’s syntax is more concise though, since you define the constructors inline in the declaration of the sum type.