base-orphans

Backwards-compatible orphan instances for base

https://github.com/haskell-compat/base-orphans#readme

Version on this page:0.9.0
LTS Haskell 22.40:0.9.2
Stackage Nightly 2024-11-07:0.9.2
Latest on Hackage:0.9.2

See all snapshots base-orphans appears in

MIT licensed and maintained by Simon Hengel, João Cristóvão, Ryan Scott
This version can be pinned in stack with:base-orphans-0.9.0@sha256:0bdd3486d3a1bcbed0513b46af4a13ca74b395313fa5b6e0068d6b7413b76a04,3205

Module documentation for 0.9.0

base-orphans

Hackage Hackage Dependencies Haskell Programming Language BSD3 License Build Status

Scope

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.

Usage

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
  • Eq1, Read1, and Show1 instances for Complex
  • Eq1, Ord1, Read1, and Show1 instances for NonEmpty
  • 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.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!

Changes

Changes in 0.9.0 [2023.03.05]

  • Adapt to recent changes to Down instances:
    • The Bounded instance for Down was changed in base-4.15.0.0 to swap the values of minBound and maxBound for the underlying type. This change has now been propagated to base-orphans.
    • The Enum instance for Down was removed in base-4.15.0.0, but a different version of the instance was added back in base-4.18.0.0, where succ and pred are swapped. We have changed the backported version of this instance in base-orphans to match the behavior of the instance added in base-4.18.0.0.
    • The Integral instance for Down was removed from base entirely in base-4.15.0.0. We have finally removed it from base-orphans in this release, as it actively makes it more difficult to define the aforementioned Enum instance.

Changes in 0.8.8 [2023.03.05]

  • Backport new instances from GHC 9.6.1/base-4.18.0.0:
    • Functor instances for the (,,,,) a b c d, (,,,,,) a b c d e, and (,,,,,) a b c d e f tuple types.
    • Eq and Ord instances for Generically

Changes in 0.8.7 [2022.08.11]

  • Backport new instances from GHC 9.2.2/base-4.16.1.0:
  • Backport a bugfix for the Ord1 Down instance from GHC 9.4/base-4.17 such that it now uses reverse sort order.

Changes in 0.8.6 [2021.10.29]

  • Backport Eq, Ord, Bounded, Enum, and Ix instances for Solo, introduced in GHC 9.2/base-4.16
  • Remove the backported Eq1 and Ord1 instances for Fixed that were introduced in base-orphans-0.8.5. While these briefly appeared in a release candidate version of GHC 9.2.1, they were ultimately removed from the final 9.2.1 release. This release of base-orphans synchronizes with that change.

Changes in 0.8.5 [2021.08.29]

  • Backport new instances from GHC 9.2/base-4.16
    • Eq1, Read1, and Show1 instances for Complex
    • Eq1 and Ord1 instances for Fixed
    • Eq{1,2}, Ord{1,2}, Show{1,2}, and Read{1,2} instances for (,,) and (,,,)
    • Semigroup and Monoid instances for Data.Functor.Product and Data.Functor.Compose

Changes in 0.8.4 [2020.12.09]

  • Backport the Ord instances for TyCon and TypeRep to be available on GHC 7.0.

Changes in 0.8.3 [2020.09.30]

  • Backport new instances from GHC 9.0/base-4.15
    • MonadFix and MonadZip instances for Complex
    • Ix instances for tuples of size 6 through 15

Changes in 0.8.2 [2020.01.27]

  • Backport new instances from GHC 8.10/base-4.14
    • Bits, Bounded, Enum, FiniteBits, Floating, Fractional, Integral, Ix, Real, RealFrac, RealFloat and Storable instances for Data.Ord.Down
    • Functor, Applicative, Monad, Alternative, and MonadPlus instances for Kleisli
    • Functor, Applicative, and Monad instances for (,,) a b and (,,,) a b c
    • Data instances for WrappedArrow and WrappedMonad
    • Data and IsList instances for ZipList
    • TestEquality instance for Compose
  • Backport the Typeable (() :: Constraint) instance to be available on GHC 7.8.

Changes in 0.8.1 [2019.03.25]

  • Ensure that the test suite passes non-negative numbers to Bits methods that require them, such as bit, setBit, clearBit, complementBit, and testBit.

Changes in 0.8 [2018.07.02]

  • Backported new instance from GHC 8.6/base-4.12
    • Data types in GHC.Generics:
      • Applicative instance for K1
      • Semigroup instances for U1, Par1, Rec1, K1, M1, (:*:), (:.:), and V1
      • Monoid instances for U1, Par1, Rec1, K1, M1, (:*:), and (:.:)
    • Foldable and Traversable instances for Data.Monoid.Alt
    • MonadFix, MonadZip, Data, Foldable, Traversable, Eq1, Ord1, Read1, and Show1 instances for Data.Ord.Down

Changes in 0.7 [2018.03.08]

  • Backported new instances from GHC 8.4/base-4.11
    • Alternative instance for ZipList
    • Data instance for IntPtr and WordPtr
    • Num, Functor, Applicative, Monad, Semigroup, and Monoid instances for Data.Ord.Down
    • MonadFail, Semigroup, and Monoid instances for strict ST

Changes in 0.6 [2017.04.10]

  • Backported new instances from GHC 8.2/base-4.10 (see https://github.com/haskell-compat/base-orphans/issues/39):
    • Data instance for Const
    • Eq1, Ord1, Read1, and Show1 instances for NonEmpty
    • Semigroup instances for IO, Event, and Lifetime
  • Backported Typeable instances for (:+:), (:*:), (:.:), M1, Rec1, ArrowMonad, Kleisli, WrappedArrow, WrappedMonad, and Any on GHC 7.6 and earlier
  • Backported Data instances for (:+:), (:*:), (:.:), M1, and Rec1 on GHC 7.6 and earlier

Changes in 0.5.4

  • Backported Bits, FiniteBits, Floating, Fractional, Integral, IsString, Num, Real, RealFloat, and RealFrac instances for Identity and Const (introduced in base-4.9)

Changes in 0.5.3

  • Backported Alternative, MonadPlus and MonadZip instances for U1 and Proxy, and made the Functor, Foldable, Traversable, Alternative, and Monad instances for U1 lazier to correspond with base-4.9

Changes in 0.5.2

  • Backported Enum, Bounded, Ix, Functor, Applicative, Monad, MonadFix, MonadPlus, MonadZip, Foldable, Traversable, and Data instances for datatypes in the GHC.Generics module (introduced in base-4.9)

Changes in 0.5.1

  • The Storable instances for Complex and Ratio are now exactly as lazy as their counterparts in base (see issue #36)

Changes in 0.5.0

Changes in 0.4.5

  • Import Control.Monad.Instances (which exports Functor and Monad instances for (->) r, and Functor instances for (,) a and Either a) on GHCs before 7.6. This ensures that these instances will always be in scope, and you won’t have to import a module which is deprecated on recent GHC releases.
  • Fix build on GHC HEAD (again)

Changes in 0.4.4

  • Fix build on GHC HEAD

Changes in 0.4.3

  • Fix build on OSes where HTYPE_DEV_T = Int32 (e.g., OS X)

Changes in 0.4.2

  • Functor instances for Handler
  • Functor. Applicative, Alternative, and MonadPlus instances for ArrowMonad
  • Expose Read and Show instances for Down on GHCs before 7.8
  • Bits, Bounded, and Integral instances for CDev

Changes in 0.4.1

  • Fixed imports on GHC < 7.8 on Windows

Changes in 0.4.0

  • Removed all Generic and Generic1 instances. These have been moved to the generic-deriving library.

Changes in 0.3.3

  • Typeable instances for (~), Any, Constraint, CSigset, Handler, Opaque, SPEC, and every promotable data constructor in base

Changes in 0.3.2

  • Storable (Complex a) instance no longer requires a RealFloat a constraint if using base-4.4 or later

Changes in 0.3.1

  • Functor, Applicative, and Monad instances for First and Last

Changes in 0.3.0

  • Show instance for Fingerprint
  • Data.Orphans is now Trustworthy
  • Backported the Generic and Generic1 instances available in base-4.7.0.0 to GHC 7.2, 7.4, and 7.6, namely
    • Const, WrappedMonad, and ZipList from Control.Applicative
    • WrappedArrow from Control.Category
    • All, Any, Dual, Endo, First, Last, Product, and Sum from Data.Monoid
    • U1, Par1, Rec1, K1, M1, (:+:), (:*:), (:.:), Arity, Associativity, and Fixity from GHC.Generics

Changes in 0.2.0

  • Drop GHC 6.12 (and base-4.2.0.0) compatibility
  • Fix Windows, GHCJS build
  • Read instance for Fixed
  • Applicative instances for strict and lazy ST
  • Typeable instance for SampleVar
  • Applicative and Alternative instances for ReadP and ReadPrec
  • Typeable instance for KProxy
  • Typeable instances for more data types in GHC.-prefixed modules
  • Generic instances for Arity, Associativity, and Fixity from the GHC.Generics module
  • Corrected the Generic instance for (:*:) to work around GHC bug #9830