[eeps] EEP 049: Value-Based Error Handling Mechanisms
Michael Truog
mjtruog@REDACTED
Fri Dec 7 21:10:20 CET 2018
On 12/07/2018 03:28 AM, Kenneth Lundin wrote:
> It is perfectly possible to use throw and try catch to replace or
> simplify deeply-nested case ... end expressions in the same way as the
> proposed language extension does.
Throwing an exception is possible in a pure function, but catching a
thrown exception makes the function impure. Advocating the use of
exceptions for control-flow of a function in a way that suggests it is
the best approach within the programming language is very disturbing.
We should be able to encourage functions to be pure, and the OTP
behaviours are already a good approach at hiding the impure receive
expression and turning it into a function clause match.
A language like Haskell would never suggest the control-flow be best
handled with an exception, but the impurity of catching an exception is
much clearer in Haskell. Please reconsider how exceptions are not the
best solution to this problem when trying to create pure functions
whenever possible. The motivation for caring about pure functions is to
make the source code easier to test in a reliable way, as the source
code changes. It should be easy to see how this motivation, to write
better source code is related to writing pure functions when it is
possible to do so.
Best Regards,
Michael
More information about the eeps
mailing list