On Saturday, 29 February 2020 at 13:40:11 UTC, Adnan wrote:
On Saturday, 29 February 2020 at 13:03:21 UTC, Sebastiaan Koppe
wrote:
On Saturday, 29 February 2020 at 12:50:59 UTC, Adnan wrote:
* Option!T from the optional package: Has even worse problem
IMO. Not only it allows None + int but also it returns a
`[]`. This API is not to my liking. You could say well
Haskell has fmap for Optional etc, and I am aware of that, so
does Rust with map etc. But I am talking about basic things:
like `+`.
I would argue it is one of its strengths.
Doesn't that pretty much defeat the entire purpose of
type-guarding a potentially error/absent value?
Like I said, I don't use optionals when I care about errors. That
is not what they are designed for.
If I want to type-guard potential errors I will use SumType!(T,
Error). It forces you to handle both cases, either at compile
time (with the match template), or at runtime (with the tryMatch
template).
The power of optionals, however, lies in the following:
```
list.first.doSomething();
```
Here doSomething will only be called when the list contains at
least one item. Here I don't care about cases where the list is
empty, I just want to doSomething if it isn't.