transformers-compat
A small compatibility shim for the transformers library
http://github.com/ekmett/transformers-compat/
| LTS Haskell 24.18: | 0.7.2 | 
| Stackage Nightly 2025-11-03: | 0.7.2 | 
| Latest on Hackage: | 0.7.2 | 
transformers-compat-0.7.2@sha256:044fb9955f63ee138fcebedfdcbe54afe741f2d5892a2d0bdf3a8052bd342643,5601Module documentation for 0.7.2
- Control
- Control.Monad
- Control.Monad.Trans
 
 
 - Control.Monad
 
transformers-compat
This provides a thin compatibility shim on top of transformers-0.2 to add the types that were added in transformers-0.3.
This enables users to maintain haskell-platform compatibility, while still gaining access ot the new functionality.
Related packages
The writer-cps-transformers package backports the
Control.Monad.Trans.{RWS,Writer}.CPS modules that were introduced in
transformers-0.5.6.0. There are also a variety of companion packages which
backport orphan instances for these types. One example is writer-cps-mtl,
which backports instances of type classes from the mtl library.
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
Changes
0.7.2 [2022.06.26]
- Add 
Eq,Ord,Read, andShowinstances forFunctorClassesDefaultinData.Functor.Classes.Generic. 
0.7.1 [2021.10.30]
- Backport new instances from GHC 9.2/
base-4.16Eq1,Read1, andShow1instances forComplexEq{1,2},Ord{1,2},Show{1,2}, andRead{1,2}instances for(,,)and(,,,)
 
0.7 [2021.07.25]
- Backport changes from 
transformers-0.6.*:- Remove the long-deprecated 
selectToContfunction fromControl.Monad.Trans.Select. - Backport various 
Generic,Generic1, andDatainstances. - Backport 
handleE,tryE, andfinallyEtoControl.Monad.Trans.Except. - Backport explicit implementations of 
(<$),liftA2,(*>), and(<*)forControl.Applicative.Backwards. - Backport a lazier implementation of 
(<*>)forControl.Applicative.Lift. 
 - Remove the long-deprecated 
 
0.6.6 [2020.09.30]
- Add 
FunctorClassesDefault, an adapter newtype suitable forDerivingVia, toData.Functor.Classes.Generic. - Fix a bug in which 
readsPrec1Default/liftReadsPrecDefaultwould parse empty data types too strictly. 
0.6.5 [2019.05.11]
- Ensure that the backported 
MonadFailinstance forExceptTis available when built againsttransformers-0.4.*. 
0.6.4 [2019.04.01]
- Use more conservative CPP to guard the backported 
MonadFixinstance forListT. 
0.6.3 [2019.04.01]
- Backport changes from 
transformers-0.5.6.*:- Backport the 
MonadFixinstance forListTinControl.Monad.Trans.Instances. - Generalize the type of 
exceptinControl.Monad.Trans.Except. 
 - Backport the 
 - Backport 
MonadFailinstances forAccumT,Reverse, andSelectTon pre-8.0 versions of GHC by depending on thefailpackage if necessary. - Backport 
MonadFailinstances for monad transformer types inControl.Monad.Trans.Instances. 
0.6.2
- 
transformers-compatnow uses automatic flags instead of manual ones. This has a number of benefits:- There is no need for making several simultaneous releases to support each flag combination.
 - As a result, the 
cabal-installconstraint solver should have a much easier time figuring out install-plans involvingtransformers-compat. 
Due to old
cabal-installbugs,cabal-install-1.16and older may have a harder time installing this package, so it is recommended that you usecabal-install-1.18or later. (Or, if you must usecabal-install-1.16or older, installingtransformers-compatwith the appropriate flags should help.) 
0.6.1.6
- Each of versions 0.6.1.2–0.6.1.6 is a 0.6.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6.1 release notes describe the changes in this version. This release is configured with none of-ftwo,-fthree,-ffour, or-ffive(which works withtransformers-0.5.3and above). 
0.6.1.5
- Each of versions 0.6.1.2–0.6.1.6 is a 0.6.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6.1 release notes describe the changes in this version. This release is configured with-ffive(which works withtransformers-0.5up until, but not including,transformers-0.5.3). 
0.6.1.4
- Each of versions 0.6.1.2–0.6.1.6 is a 0.6.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6.1 release notes describe the changes in this version. This release is configured with-ffour(which works with thetransformers-0.4series). 
0.6.1.3
- Each of versions 0.6.1.2–0.6.1.6 is a 0.6.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6.1 release notes describe the changes in this version. This release is configured with-fthree(which works with thetransformers-0.3series). 
0.6.1.2
- Each of versions 0.6.1.2–0.6.1.6 is a 0.6.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6.1 release notes describe the changes in this version. This release is configured with-ftwo(which works with thetransformers-0.2series). 
0.6.1
- Fix an oversight in which the 
Control.Monad.Trans.AccumandControl.Monad.Trans.Selectmodules were not backported when built with the-ffourflag. 
0.6.0.6
- Each of versions 0.6.0.2–0.6.0.6 is a 0.6 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6 release notes describe the changes in this version. This release is configured with none of-ftwo,-fthree,-ffour, or-ffive(which works withtransformers-0.5.3and above). 
0.6.0.5
- Each of versions 0.6.0.2–0.6.0.6 is a 0.6 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6 release notes describe the changes in this version. This release is configured with-ffive(which works withtransformers-0.5up until, but not including,transformers-0.5.3). 
0.6.0.4
- Each of versions 0.6.0.2–0.6.0.6 is a 0.6 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6 release notes describe the changes in this version. This release is configured with-ffour(which works with thetransformers-0.4series). 
0.6.0.3
- Each of versions 0.6.0.2–0.6.0.6 is a 0.6 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6 release notes describe the changes in this version. This release is configured with-fthree(which works with thetransformers-0.3series). 
0.6.0.2
- Each of versions 0.6.0.2–0.6.0.6 is a 0.6 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.6 release notes describe the changes in this version. This release is configured with-ftwo(which works with thetransformers-0.2series). 
0.6
- Introduce the 
Data.Functor.Classes.Genericmodule, which provides functions that can generically implement methods in theEq1,Ord1,Read1, andShow1classes (without the usual boilerplate involved). - Introduce the 
generic-derivingflag. When enabled,transformers-compatwill depend on thegeneric-derivinglibrary on older versions of GHC to backportGHC.Genericssupport forGenericinstances and the machinery inData.Functor.Classes.Generic. - Some instances were present in 
Data.Functor.Sumbut not inControl.Monad.Trans.Instances(e.g., theGeneric,Typeable, andDatainstances forSum). This has been fixed. - Backport changes from 
transformers-0.5.5:- Backport the 
Semigroupinstance forConstant - Add 
mapSelectandmapSelectT - Define 
selectToContT(and deprecateselectToContin favor of that) - Define some explicit 
(*>)definitions to avoid space leaks 
 - Backport the 
 - Backport changes from 
transformers-0.5.4(i.e., addBifoldableandBitraversableinstances forData.Functor.Constant) - Backport changes from 
transformers-0.5.3:- Backport the 
Control.Monad.Trans.AccumandControl.Monad.Trans.Selectmodules - Backport the 
eitherToErrorsandelimLiftfunctions toControl.Applicative.Lift - Backport 
Bits,FiniteBits,IsString,Num,Real,Integral,Fractional,Floating,RealFrac, andRealFloatinstances forData.Functor.Identity - Backport 
Monad,MonadFail, andMonadPlusinstances forData.Functor.Reverse - Backport 
Eq1,Ord1,Read1, andShow1instances forData.Proxy 
 - Backport the 
 - Backport changes from 
transformers-0.5.2(i.e., add moreINLINEannotations) - Backport changes from 
transformers-0.5.1(i.e., addBounded,Enum,Ix, andStorableinstances forIdentity) 
0.5.1.4
- Each of versions 0.5.1.2–0.5.1.4 is a 0.5.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.5.1 release notes describe the changes in this version. This release is configured with neither-ftwonor-fthree(which works withtransformers-0.4and above). 
0.5.1.3
- Each of versions 0.5.1.2–0.5.1.4 is a 0.5.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.5.1 release notes describe the changes in this version. This release is configured with-fthree(which works with thetransformers-0.3series). 
0.5.1.2
- Each of versions 0.5.1.2–0.5.1.4 is a 0.5.1 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.5.1 release notes describe the changes in this version. This release is configured with-ftwo(which works with thetransformers-0.2series). 
0.5.1
- Fix a bug in which 
PolyKindswas enabled on GHC 7.4, resulting in interface file bugs on that version of GHC. 
0.5.0.4
- Each of versions 0.5.0.2–0.5.0.4 is a 0.5 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.5 release notes describe the changes in this version. This release is configured with neither-ftwonor-fthree(which works withtransformers-0.4and above). 
0.5.0.3
- Each of versions 0.5.0.2–0.5.0.4 is a 0.5 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.5 release notes describe the changes in this version. This release is configured with-fthree(which works with thetransformers-0.3series). 
0.5.0.2
- Each of versions 0.5.0.2–0.5.0.4 is a 0.5 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.5 release notes describe the changes in this version. This release is configured with-ftwo(which works with thetransformers-0.2series). 
0.5
- Update 
transformers-compatto incorporate changes from thetransformers-0.5series. These changes include:- The 
Data.Functor.Classesmodule was completely redesigned. - Modules now have 
SafeorTrustworthyannotations. - Data types and type synonyms are poly-kinded when possible.
 
 - The 
 - Add 
Control.Monad.Trans.Instances, a module of orphan instances that mimic instances available in later versions oftransformers. 
0.4.0.4
- Each of versions 0.4.0.2–0.4.0.4 is a 0.4 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.4 release notes describe the changes in this version. This release is configured with neither-ftwonor-fthree(which works withtransformers-0.4and above). 
0.4.0.3
- Each of versions 0.4.0.2–0.4.0.4 is a 0.4 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.4 release notes describe the changes in this version. This release is configured with-fthree(which works with thetransformers-0.3series). 
0.4.0.2
- Each of versions 0.4.0.2–0.4.0.4 is a 0.4 build with a different set of flags configured. Building this way allows us to work around bugs in 
cabal’s backtracker. The 0.4 release notes describe the changes in this version. This release is configured with-ftwo(which works with thetransformers-0.2series). 
0.4
- 
Added support for the missing
ExceptTinstances frommtl.This was not done lightly. While this means that by default incurring a dependency on
transformers-compatdrags inmtlwhen you are using an oldtransformers, it means that users do not have to orphan these instances and permits wider adoption ofExceptT.If you absolutely can’t stand
mtland really want this package to build as validHaskell98, then you can usecabal install transformers-compat -f-mtlto avoid incurring the dependency to get these instances. However, that is effectively an unsupported configuration. 
0.3.3.4
- Versions 0.3.3.2–0.3.3.4 were a successful attempt to fix build problems caused by the cabal backtracker.
 - Each of these is a build with a different set of flags configured.
This release is configured with neither 
-ftwonor-fthree(which works withtransformers-0.4and above). 
0.3.3.3
- Versions 0.3.3.2–0.3.3.4 were a successful attempt to fix build problems caused by the cabal backtracker.
 - Each of these is a build with a different set of flags configured.
This release is configured with 
-fthree(which works with thetransformers-0.3series). 
0.3.3.2
- Versions 0.3.3.2–0.3.3.4 were a successful attempt to fix build problems caused by the cabal backtracker.
 - Each of these is a build with a different set of flags configured.
This release is configured with 
-ftwo(which works with thetransformers-0.2series). 
0.3.2
- This release was a failed (or at least, only partially successful) attempt to fix build problems caused by the cabal backtracker.
 
0.3.1
transformers 0.4.1compatibility
0.3
- Added the instances for 
Data.Functor.Classesfromtransformers 0.4 - Switched 
Control.Applicative.BackwardsandData.Functor.Reverseto the split constructor/accessor style fromtransformers 0.4. 
0.2
- Added the new types and classes from 
transformers 0.4 
0.1.1.1
- Wrote a better synopsis
 
0.1.1
- Updated to trick 
cabalinto building an emptylibHStransformers-compat-0.1.aon GHC 7.6. 
0.1
- Repository initialized by pulling the 
transformers-0.2compatibility layer out oflens.