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

Either Error Success

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

Either Error Success

Avatar for Tim McGilchrist

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