| ▲ | qsera 3 hours ago | |
>you would have to change the code at all call sites. Actually I think you can just change concrete argument `Foo` to type constraint in Haskell as well using a type class. So the function would be something like `foo :: ToMaybeFoo a => a -> .. ->`. And you would implment `ToMaybeFoo` instance for `Foo` and `Maybe Foo`. Agree that this is more involved than typescript, but you get to keep `null` away from your code... | ||
| ▲ | cubefox 39 minutes ago | parent [-] | |
Admittedly I don't really understand your construction. But this solution, if it works, doesn't look practical enough that it could be routinely used in practice like Foo|Null could be. By the way, some languages even shorten "Foo|Null" to "Foo?" as syntax sugar. > but you get to keep `null` away from your code... I don't think this would be desirable once we have eliminated null pointer exceptions with untagged unions. | ||