An either monad transformer http://github.com/ekmett/either/

Version on this page:
LTS Haskell 9.6:
Stackage Nightly 2017-09-25:
Latest on Hackage:
BSD3 licensed by Edward A. Kmett
Maintained by Edward A. Kmett

Module documentation for

There are no documented modules for this package.


Hackage Build Status

This provides an Either monad transformer that unlike ErrorT is unencumbered by a constraint on its Left hand argument. This is needed for a number of applications of this monad transformer, notably in recursion-schemes.

Contact Information

Contributions and bug reports are welcome!

Please feel free to contact me through github or on the #haskell IRC channel on irc.freenode.net.

-Edward Kmett


  • Fixed building on newer GHCs. (type synonyms require explicit foralls for unused variables these days)


  • transformers 0.5 support
  • Documentation fixes


  • Support mmorph

  • Support MonadRandom 0.4


  • Support bifunctors 5, profunctors 5, and semigroupoids 5.

  • Fixed and enhanced documentation for eitherToError.

  • Support exceptions 0.8

  • Support exceptions 0.7


  • Added eitherToError.

  • Support monad-control 1.0


  • Added Validation.

  • Updated MonadRandom support.

  • Fixed import of MonadCatch to support versions of base before 4.6


  • Inverted dependency between free and either.


  • Added instances for MonadThrow, MonadCatch.


  • Added instances for MonadBase, MonadBaseControl, and MonadTransControl.


  • Updated dependencies.


  • Added 'Data.Either.Combinators'.


  • Trustworthy despite UndecidableInstances


  • Delegate fail to the underlying Monad, rather than error.


  • Inverted roles between Semigroup and Alt. This let us write Alternative and MonadPlus instances that are compatible.
  • Removed the Functor constraint on most instances in exchange for incurring a Monad constraint on Traversable. EitherT is after all, a Monad transformer first and foremost.


  • Changed the Semigroup to use a Semigroup to combine Left branches. Left Alt untouched, so you can mix and match.


  • Added instances for mtl classes and MonadRandom.
  • The meaning of mapEitherT has changed to match mapErrorT in the mtl. The old mapEitherT is now bimapEitherT.


  • Started CHANGELOG
Used by 176 packages:
airship, amby, aws-kinesis-reshard, backtracking-exceptions, bitcoin-payment-channel, blockchain, brittany, butcher, cabal-bounds, cabal-cargs, cabal-lenses, category-extras, catnplus, cgrep, citation-resolve, cj-token, cli-builder, codex, conduit-find, configifier, consul-haskell, control-invariants, convert, coroutine-object, cryptsy-api, CSPM-Frontend, dash-haskell, database-migrate, debian, dixi, drifter-postgresql, DSH, dsh-sql, dynamic-graph, easy-api, emailparse, engine-io, engine-io-wai, error-continuations, ethereum-client-haskell, exference, fficxx, ffmpeg-light, filediff, find-conduit, fixie, flamingra, fn-extra, formura, glabrous, glambda, growler, happstack-heist, haskell-kubernetes, haskellscript, haskoin, haskoin-core, haskoin-node, haskoin-util, hasql, hasql-backend, hasql-postgres, haste-compiler, hcltest, hedis-simple, hexpr, h-gpgme, hipbot, hipchat-hs, hledger-api, hnetcdf, hoggl, hoist-error, hoodle-core, hoodle-extra, hoodle-parser, hsoz, hs-snowtify, http-client-session, ical, imap, indieweb-algorithms, infernu, interruptible, jose-jwt, karps, katip, laika, language-qux, lens-prelude, librato, list-t-attoparsec, list-t-html-parser, list-t-libcurl, magicbane, marquise, mathblog, medium-sdk-haskell, melody, microformats2-parser, monad-journal, mtgoxapi, mustache, nomyx-api, oauthenticated, obd, objective, octohat, oculus, open-signals, optparse-simple, orchestrate, ot, pb-next, penny, pg-recorder, pianola, ping-wrapper, pivotal-tracker, playlists-http, postgresql-query, postgresql-simple-opts, postgrest, postgrest-ws, pregame, presto-hdbc, project-m36, psc-ide, quickcheck-property-monad, Quickson, quickwebapp, rebase, references, replicant, restricted-workers, riff, Saturnin, sdr, servant-ede, servant-examples, servant-haxl-client, servant-snap, simple-conduit, slack, snaplet-sqlite-simple-jwt-auth, snaplet-wordpress, snowtify, socketson, stack, stackage-cli, stratux-http, stratux-websockets, syncthing-hs, system-lifted, system-util, t3-server, tasty-integrate, themoviedb, themplate, thumbnail-plus, tibetan-utils, transformers-convert, ttask, twfy-api-client, typerbole, validate-input, verify, vigilance, vimeta, WaveFront, webcrank, xcffib, yahoo-finance-api, yarn-lock, yesod-auth-ldap-native, yesod-crud-persist
comments powered byDisqus