Either Error Success

Either Error Success

67afd2b4c98c9befd18c19f0ee9d94dc?s=128

Tim McGilchrist

May 24, 2018
Tweet

Transcript

  1. 1.
  2. 3.

    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
  3. 7.

    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
  4. 9.

    Exception Pattern • type signature doesn’t indicate errors • exceptions

    compose without effort • no stack traces by default • dealing with exceptions properly is hard
  5. 11.

    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
  6. 13.

    Either Examples • mismi - wrapper around Amazonka • mafia

    - cabal build tool • boris - continuous integration / builds
  7. 14.

    Exception Examples • http-client - http library • stack -

    Haskell build tool ++ • hs-tls - Native Haskell TLS / SSL implementation
  8. 15.

    Conclusion • make error behaviour explicit • use appropriate tool

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