The dependecy of errors
on either
is specified as either >= 3.0.1
, and either
isn't listed as a build-dependency for snap
(since the used module Control.Monad.Trans.Either
is re-exported from Control.Error
, that isn't necessary, even though snap
directly uses code from either
). Thus building snap
pulls in the latest version of either
.
However, in either-3.1
, the type of mapEitherT
changed. It used to be
mapEitherT :: Functor m => (e -> f) -> (a -> b) -> EitherT e m a -> EitherT f m b
in either-3.0.*
, and now it is
mapEitherT :: (m (Either e a) -> n (Either e' b)) -> EitherT e m a -> EitherT e' n b
The code was written for the old version.
You can constrain the version of either
to use,
cabal install snaplet-sqlite-simple --constraint="either < 3.1"
to build it.