Exceptional Haskell
summary
Claims concrete tradeoffs: Haskell has both synchronous and asynchronous runtime exceptions, try/catch/bracket use Typeable + AnyException with runtime type equality, and using Either/ExceptT incurs an Either/ExceptT slowdown: extra if + pointer deref in tight loops. There are practical tools and patterns: classy prisms for composable typed exceptions, monad-error/MTL, monadST/monad-throw tricks, and the TypeError trick for custom instance errors. PureScript’s row types solve grow/shrink of error sets; attempts to port that to Haskell (ongoing since January) repeatedly stall.
AI-written summary · about
chapters (39)
- 0:00Introduction
- 1:17Exceptions
- 3:11Go
- 3:52Error Handling
- 5:56Exceptional Semantics
- 6:06Undefined
- 6:56Bottom
- 7:28Synchronous Exceptions
- 8:00Precise Exceptions
- 8:14Java
- 9:20laziness
- 11:00welcome to programming
- 11:26either type
- 11:57performance
- 12:35monad ste
- 14:19tradeoffs
- 17:15exception types
- 18:32possibility spaces
- 19:58types
- 27:56iid
- 41:54Haskells exception system
- 42:38Best practices
- 42:55Debugging exceptions
- 43:34Error strings
- 44:12Leave comments
- 44:34Type signature
- 45:40OpenFile
- 47:17TypeError
- 48:08ERException
- 49:43Debugging
- 50:25payload
- 50:46exception
- 51:43social media
- 52:39pro approach
- 52:56type error
- 54:14IOT exceptions
- 54:49polymorphism
- 55:15row polymorphism
- 56:30typelevel lists








