Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Either Error Success

Either Error Success

Tim McGilchrist

May 24, 2018
Tweet

More Decks by Tim McGilchrist

Other Decks in Programming

Transcript

  1. Introduction • who, what, why, where, how questions • who

    -> Tim McGilchrist @lambda_foo • what -> exciting area of error handling • where -> in Haskell mostly • how -> with functions and data types
  2. The Async Problem • Asynchronous exceptions are a feature of

    Haskell • No fancy effect systems or modular IO effects • Deal with it! • Code in IO can fail at any point with an exception
  3. Exception Pattern • type signature doesn’t indicate errors • exceptions

    compose without effort • no stack traces by default • dealing with exceptions properly is hard
  4. EitherT Pattern • pattern matching has your back • composition

    is explicit (you need to think) • application stack traces • constrained exception handling • extra work • interfacing with exception heavy code
  5. Either Examples • mismi - wrapper around Amazonka • mafia

    - cabal build tool • boris - continuous integration / builds
  6. Exception Examples • http-client - http library • stack -

    Haskell build tool ++ • hs-tls - Native Haskell TLS / SSL implementation
  7. Conclusion • make error behaviour explicit • use appropriate tool

    for the job • EitherT yields more maintainable code • similar or less effort to exceptions