@hackage base-orphans0.9.2

Backwards-compatible orphan instances for base


Hackage Hackage Dependencies Haskell Programming Language BSD3 License Build Status


base-orphans defines orphan instances that mimic instances available in later versions of base to a wider (older) range of compilers. base-orphans does not export anything except the orphan instances themselves and complements base-compat.

Note that base-orphans doesn't cover every possible instance. See the What is not covered section for exceptions.


To use base-orphans, simply import Data.Orphans ().

What is covered

  • Alternative, MonadPlus, and MonadZip instances for Proxy
  • Alternative, Applicative, Bounded, Data, Enum, Foldable, Functor, Ix, Monad, MonadFix, MonadPlus, MonadZip, and Traversable instances for data types in GHC.Generics
  • Alternative, Eq, Ord, Read, Show, Foldable, and Traversable instances for ZipList
  • Applicative instance for K1 from GHC.Generics
  • Applicative, Bits, Bounded, Data, Enum, Eq1, FiniteBits, Floating, Foldable, Fractional, Functor, Ix, Ord1, Monad, MonadFix, MonadZip, Monoid, Num, Read, Read1, Real, RealFloat, RealFrac, Semigroup, Show, Show1, Storable, and Traversable instances for Down
  • Applicative and Alternative instances for ReadP and ReadPrec
  • Applicative instance for strict and lazy ST
  • Applicative, Foldable, Functor, Monad, and Traversable instances for Complex, Dual, First, Last, Product, and Sum
  • Bits instance for Bool
  • Bits, Bounded, and Integral instances for CDev
  • Bits, Bounded, Enum, FiniteBits, Floating, Fractional, Integral, IsString, Ix, Num, Real, RealFloat, RealFrac, and Storable instances for Const and Identity
  • Data instances for All, Any, and Const, IntPtr, WordPtr, WrappedArrow and WrappedMonad
  • Data, MonadFix and MonadZip instances for Alt, Dual, First, Last, Product, and Sum
  • Data and IsList instances for Version and ZipList
  • Eq{1,2}, Ord{1,2}, Show{1,2}, and Read{1,2} instances for (,,) and (,,,)
  • Eq and Ord instances for Control.Exception.ErrorCall
  • Eq, Ord, Read, and Show instances for data types in GHC.Generics
  • Eq, Ord, Bounded, Enum, and Ix instances for Solo
  • Eq and Ord instances for Generically1
  • Eq and Ord instances for SChar, SNat, and SSymbol
  • Eq1, Read1, and Show1 instances for Complex
  • Eq1, Ord1, Read1, and Show1 instances for NonEmpty
  • Enum, Bounded, Num, Real, Integral, Fractional, RealFrac, Floating, and RealFloat instances for Compose
  • Foldable instance for Either, (,) and Const
  • Foldable and Traversable instances for Alt from Data.Monoid
  • Functor, Applicative, and Monad instances for (,,) a b and (,,,) a b c
  • Functor instances for (,,,,) a b c d, (,,,,,) a b c d e, and (,,,,,) a b c d e f
  • Functor instance for Handler, ArgOrder, OptDescr, and ArgDescr
  • Functor, Applicative, Alternative, and MonadPlus instances for ArrowMonad
  • Functor, Applicative, Monad, Alternative, and MonadPlus instances for Kleisli
  • Ix instances for tuples of size 6 through 15
  • Ix instances for integral types in Foreign.C.Types, Foreign.Ptr, and System.Posix.Types
  • Monad instance for (,)
  • Monad instance for WrappedMonad
  • MonadFail, Monoid, and Semigroup instances for strict ST
  • MonadFix and MonadZip instances for Complex
  • MonadZip instance for Maybe
  • Monoid, Eq, Ord, Read, and Show instances for Const
  • Monoid instances for Identity and IO
  • Num instance for Sum and Product
  • Read instance for Fixed
  • Semigroup instances for IO, Event and Lifetime
  • Semigroup instances for V1, U1, Par1, Rec1, K1, M1, (:*:), and (:.:) from GHC.Generics. Monoid instances for the same types (except V1).
  • Semigroup and Monoid instances for Data.Functor.Product and Data.Functor.Compose
  • Show instance for Fingerprint
  • Storable instance for (), Complex, and Ratio
  • TestEquality instance for Compose
  • Traversable instance for Either, (,) and Const
  • Ord instance for TyCon and TypeRep.
  • Typeable instance for most data types, typeclasses, and promoted data constructors (when possible)

What is not covered

base-orphans does not define the following instances:

Supported versions of GHC/base

  • ghc-9.10.* / base-4.20.*
  • ghc-9.8.* / base-4.19.*
  • ghc-9.6.* / base-4.18.*
  • ghc-9.4.* / base-4.17.*
  • ghc-9.2.* / base-4.16.*
  • ghc-9.0.* / base-4.15.*
  • ghc-8.10.* / base-4.14.*
  • ghc-8.8.* / base-4.13.*
  • ghc-8.6.* / base-4.12.*
  • ghc-8.4.* / base-4.11.*
  • ghc-8.2.* / base-4.10.*
  • ghc-8.0.* / base-4.9.*
  • ghc-7.10.* / base-4.8.*
  • ghc-7.8.* / base-4.7.*
  • ghc-7.6.* / base-4.6.*
  • ghc-7.4.* / base-4.5.*
  • ghc-7.2.* / base-4.4.*
  • ghc-7.0.* / base-4.3.*

We also make an attempt to keep base-orphans building with GHC HEAD, but due to its volatility, it may not work at any given point in time. If it doesn't, please report it!

Patches are welcome; add tests for new code!