|
|
|
|
|
by valcron1000
371 days ago
|
|
My favorite language used to interpret my most hated language (used both professionally). There are several things I disagree with regarding Haskell but it's understandable given that this is OP's first time using the language (like a "monad's internal state"), but I want to highlight one particular observation: > This uncertainty of time of evaluation also makes catching errors difficult, because calling catch on the function that throws the error will not necessarily catch that error It's important to distinguish between imprecise exceptions (ex. calls to `error `, `undefined`, and the like) and synchronous exceptions (async exceptions are not important for the article). > Catch must be called on the function that forces evaluation on that error. This is something that is hard to trace, and something that types don’t help much with. The types are actually the most important part here! Synchronous exceptions cannot be thrown by pure code (as long as we're not dealing with escape hatches like `unsafePerformIO`), while IO code can throw and catch all kind of exceptions . |
|
https://hackage.haskell.org/package/bluefin-0.0.16.0/docs/Bl...