The whole reason to introduce these helpers and treat (T, error) as a check monad is to improve ergonomics. With the eager versions, calling code has to always store intermediates because we're only allowed to wrap the result of a function call when it's the only argument. For example.
For the same reason, the eager versions also don't allow chaining. Come to think of it, we probably don't need the eager versions, at all. Best case scenario: #1 yields that the functions are inlined anyway 🤷 .
The whole reason to introduce these helpers and treat
(T, error)
as a check monad is to improve ergonomics. With the eager versions, calling code has to always store intermediates because we're only allowed to wrap the result of a function call when it's the only argument. For example.vs.
For the same reason, the eager versions also don't allow chaining. Come to think of it, we probably don't need the eager versions, at all. Best case scenario: #1 yields that the functions are inlined anyway 🤷 .