C Foo(A a) = ...
Someone then provides me with some not-A error value. What should I do? What do you mean by implicit.
Product types work as well, if you want. But unless your return type is a monoid (or like, a semilattice maybe?) then you're going to end up with Sum Types somewhere.
The vast, vast majority of software engineers and students work with sum types every day and they're totally fine with them. Most languages implicitly sum many values with null.
Then it's fair to say that you definitely can't get an error by adding two numbers.
You request a smaller block of memory? Not everyone is always requesting the minimum they need right now.
> Would probably let it crash and restart (Erlang model)
The Erlang model is to let a partial failure trigger a less complex part of the system to resume that logic based on a strategy.
> Then it's fair to say that you definitely can't get an error by adding two numbers.
I mean, you can also accept garbage back, I guess?