3 ms·
> Unpredictable exception-throwing only happens if the work being done by your function isn't pure, i.e. it depends on something other than the function paramet
by acomar 10y ago
> Unpredictable exception-throwing only happens if the work being done by your function isn't pure, i.e. it depends on something other than the function parameters.
This isn't true. The canonical example is trying to grab the first element of an empty list. You either check and catch the error or eat the exceptional behavior, but some pure functions are just partial and aren't defined for all inputs.
(Whether or not they throw a catch-able exception depends on language/implementation and is really not relevant to my point.)
- gpderetta 10y agoHow's that unpredictable? It will always throw for all and only empty lis arguments.
- acomar 10y agoIt's unpredictable in the sense that even with a compile-time check that the function I'm calling is pure, I don't have any guarantee that it won't throw on my particular inputs. This comes up a lot in the Haskell community -- code outside IO is guaranteed by the compiler to be pure, but you can still get hit with an asynchronous exception because you called a partial function.