base-orphans 0.4.3 → 0.4.4
raw patch · 18 files changed
+1574/−1565 lines, 18 filesdep ~basesetup-changedPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: base
API changes (from Hackage documentation)
Files
- CHANGES.markdown +55/−52
- LICENSE +20/−20
- README.markdown +73/−69
- Setup.hs +2/−2
- base-orphans.cabal +71/−71
- src/Data/Orphans.hs +865/−865
- src/Data/Orphans/Prelude.hs +96/−94
- test/Control/Applicative/OrphansSpec.hs +40/−40
- test/Control/Exception/OrphansSpec.hs +17/−17
- test/Data/Bits/OrphansSpec.hs +25/−25
- test/Data/Foldable/OrphansSpec.hs +38/−38
- test/Data/Monoid/OrphansSpec.hs +17/−17
- test/Data/Traversable/OrphansSpec.hs +27/−27
- test/Data/Version/OrphansSpec.hs +26/−26
- test/Foreign/Storable/OrphansSpec.hs +24/−24
- test/GHC/Fingerprint/OrphansSpec.hs +29/−29
- test/Spec.hs +1/−1
- test/System/Posix/Types/OrphansSpec.hs +148/−148
CHANGES.markdown view
@@ -1,52 +1,55 @@-## 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 +## 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
LICENSE view
@@ -1,20 +1,20 @@-Copyright (c) 2015 Simon Hengel <sol@typeful.net>, João Cristóvão <jmacristovao@gmail.com>, Ryan Scott <ryan.gl.scott@ku.edu> - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be included -in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. -IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY -CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE -SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +Copyright (c) 2015 Simon Hengel <sol@typeful.net>, João Cristóvão <jmacristovao@gmail.com>, Ryan Scott <ryan.gl.scott@ku.edu>++Permission is hereby granted, free of charge, to any person obtaining+a copy of this software and associated documentation files (the+"Software"), to deal in the Software without restriction, including+without limitation the rights to use, copy, modify, merge, publish,+distribute, sublicense, and/or sell copies of the Software, and to+permit persons to whom the Software is furnished to do so, subject to+the following conditions:++The above copyright notice and this permission notice shall be included+in all copies or substantial portions of the Software.++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
README.markdown view
@@ -1,69 +1,73 @@-# `base-orphans` [](http://hackage.haskell.org/package/base-orphans) [](https://travis-ci.org/haskell-compat/base-orphans) - -## 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](http://hackage.haskell.org/package/base-compat). - -Note that `base-orphans` doesn't cover every possible instance. See the -[What is not covered](#what-is-not-covered) section for exceptions. - -## Usage - -To use `base-orphans`, simply `import Data.Orphans ()`. - -## What is covered - - * Added `Applicative` and `Alternative` instances for `ReadP` and `ReadPrec` - * Added `Bits`, `Bounded`, and `Integral` instances for `CDev` - * Added `Eq` and `Ord` instances for `Control.Exception.ErrorCall` - * Added `Eq`, `Ord`, `Read`, and `Show` instances for data types in `GHC.Generics` - * Added `Functor`, `Applicative`, `Alternative`, and `MonadPlus` instances for `ArrowMonad` - * Added `Functor`, `Applicative`, and `Monad` instances for `First` and `Last` - * Added `Monoid`, `Eq`, `Ord`, `Read`, and `Show` instances for `Const` - * Added `Read` and `Show` instances for `Down` - * Added `Eq`, `Ord`, `Read`, and `Show` instances for `ZipList` - * Added `Monad` instance for `WrappedMonad` - * Added `Data` and `IsList` instances for `Version` - * `Applicative` instance for strict and lazy `ST` - * `Bits` instance for `Bool` - * `Foldable` instance for `Either`, `(,)` and `Const` - * `Functor` instance for `Handler`, `ArgOrder`, `OptDescr`, and `ArgDescr` - * `Num` instance for `Sum` and `Product` - * `Read` instance for `Fixed` - * `Show` instance for `Fingerprint` - * `Storable` instance for `Complex` and `Ratio` - * `Traversable` instance for `Either`, `(,)` and `Const` - * `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: - -* `Generic` or `Generic1` instances. These can be found in the - [`Generics.Deriving.Instances`](https://hackage.haskell.org/package/generic-deriving-1.8.0/docs/Generics-Deriving-Instances.html) - module of the [`generic-deriving`](https://hackage.haskell.org/package/generic-deriving) - library. - -## Supported versions of GHC/`base` - - * `ghc-7.10.2` / `base-4.8.1.0` - * `ghc-7.10.1` / `base-4.8.0.0` - * `ghc-7.8.4` / `base-4.7.0.2` - * `ghc-7.8.3` / `base-4.7.0.1` - * `ghc-7.8.2` / `base-4.7.0.0` - * `ghc-7.8.1` / `base-4.7.0.0` - * `ghc-7.6.3` / `base-4.6.0.1` - * `ghc-7.6.2` / `base-4.6.0.1` - * `ghc-7.6.1` / `base-4.6.0.0` - * `ghc-7.4.2` / `base-4.5.1.0` - * `ghc-7.4.1` / `base-4.5.0.0` - * `ghc-7.2.2` / `base-4.4.1.0` - * `ghc-7.2.1` / `base-4.4.0.0` - * `ghc-7.0.4` / `base-4.3.1.0` - * `ghc-7.0.3` / `base-4.3.1.0` - * `ghc-7.0.2` / `base-4.3.1.0` - * `ghc-7.0.1` / `base-4.3.0.0` - -Patches are welcome; add tests for new code! +# `base-orphans` [](http://hackage.haskell.org/package/base-orphans) [](https://travis-ci.org/haskell-compat/base-orphans)++## 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](http://hackage.haskell.org/package/base-compat).++Note that `base-orphans` doesn't cover every possible instance. See the+[What is not covered](#what-is-not-covered) section for exceptions.++## Usage++To use `base-orphans`, simply `import Data.Orphans ()`.++## What is covered++ * Added `Applicative` and `Alternative` instances for `ReadP` and `ReadPrec`+ * Added `Bits`, `Bounded`, and `Integral` instances for `CDev`+ * Added `Eq` and `Ord` instances for `Control.Exception.ErrorCall`+ * Added `Eq`, `Ord`, `Read`, and `Show` instances for data types in `GHC.Generics`+ * Added `Functor`, `Applicative`, `Alternative`, and `MonadPlus` instances for `ArrowMonad`+ * Added `Functor`, `Applicative`, and `Monad` instances for `First` and `Last`+ * Added `Monoid`, `Eq`, `Ord`, `Read`, and `Show` instances for `Const`+ * Added `Read` and `Show` instances for `Down`+ * Added `Eq`, `Ord`, `Read`, and `Show` instances for `ZipList`+ * Added `Monad` instance for `WrappedMonad`+ * Added `Data` and `IsList` instances for `Version`+ * `Applicative` instance for strict and lazy `ST`+ * `Bits` instance for `Bool`+ * `Foldable` instance for `Either`, `(,)` and `Const`+ * `Functor` instance for `Handler`, `ArgOrder`, `OptDescr`, and `ArgDescr`+ * `Num` instance for `Sum` and `Product`+ * `Read` instance for `Fixed`+ * `Show` instance for `Fingerprint`+ * `Storable` instance for `Complex` and `Ratio`+ * `Traversable` instance for `Either`, `(,)` and `Const`+ * `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:++* `Generic` or `Generic1` instances. These can be found in the+ [`Generics.Deriving.Instances`](https://hackage.haskell.org/package/generic-deriving-1.8.0/docs/Generics-Deriving-Instances.html)+ module of the [`generic-deriving`](https://hackage.haskell.org/package/generic-deriving)+ library.++## Supported versions of GHC/`base`++ * `ghc-7.10.2` / `base-4.8.1.0`+ * `ghc-7.10.1` / `base-4.8.0.0`+ * `ghc-7.8.4` / `base-4.7.0.2`+ * `ghc-7.8.3` / `base-4.7.0.1`+ * `ghc-7.8.2` / `base-4.7.0.0`+ * `ghc-7.8.1` / `base-4.7.0.0`+ * `ghc-7.6.3` / `base-4.6.0.1`+ * `ghc-7.6.2` / `base-4.6.0.1`+ * `ghc-7.6.1` / `base-4.6.0.0`+ * `ghc-7.4.2` / `base-4.5.1.0`+ * `ghc-7.4.1` / `base-4.5.0.0`+ * `ghc-7.2.2` / `base-4.4.1.0`+ * `ghc-7.2.1` / `base-4.4.0.0`+ * `ghc-7.0.4` / `base-4.3.1.0`+ * `ghc-7.0.3` / `base-4.3.1.0`+ * `ghc-7.0.2` / `base-4.3.1.0`+ * `ghc-7.0.1` / `base-4.3.0.0`++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!
Setup.hs view
@@ -1,2 +1,2 @@-import Distribution.Simple -main = defaultMain +import Distribution.Simple+main = defaultMain
base-orphans.cabal view
@@ -1,71 +1,71 @@--- This file has been generated from package.yaml by hpack version 0.5.4. --- --- see: https://github.com/sol/hpack - -name: base-orphans -version: 0.4.3 -synopsis: Backwards-compatible orphan instances for base -homepage: https://github.com/haskell-compat/base-orphans#readme -bug-reports: https://github.com/haskell-compat/base-orphans/issues -license: MIT -license-file: LICENSE -author: Simon Hengel <sol@typeful.net>, - João Cristóvão <jmacristovao@gmail.com>, - Ryan Scott <ryan.gl.scott@ku.edu> -maintainer: Simon Hengel <sol@typeful.net>, - João Cristóvão <jmacristovao@gmail.com>, - Ryan Scott <ryan.gl.scott@ku.edu> -copyright: (c) 2012-2015 Simon Hengel, - (c) 2014 João Cristóvão, - (c) 2015 Ryan Scott -category: Compatibility -build-type: Simple -cabal-version: >= 1.10 -description: @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 @<http://hackage.haskell.org/package/base-compat base-compat>@. - See the README for what instances are covered: <https://github.com/haskell-compat/base-orphans#readme>. See also the <https://github.com/haskell-compat/base-orphans#what-is-not-covered what is not covered> section. - -extra-source-files: - CHANGES.markdown - README.markdown - -source-repository head - type: git - location: https://github.com/haskell-compat/base-orphans - -library - hs-source-dirs: - src - ghc-options: -Wall - build-depends: - base >= 4.3 && < 5 - , ghc-prim - exposed-modules: - Data.Orphans - other-modules: - Data.Orphans.Prelude - default-language: Haskell2010 - -test-suite spec - type: exitcode-stdio-1.0 - main-is: Spec.hs - hs-source-dirs: - test - ghc-options: -Wall - build-depends: - base >= 4.3 && < 5 - , base-orphans - , hspec == 2.* - , QuickCheck - other-modules: - Control.Applicative.OrphansSpec - Control.Exception.OrphansSpec - Data.Bits.OrphansSpec - Data.Foldable.OrphansSpec - Data.Monoid.OrphansSpec - Data.Traversable.OrphansSpec - Data.Version.OrphansSpec - Foreign.Storable.OrphansSpec - GHC.Fingerprint.OrphansSpec - System.Posix.Types.IntWord - System.Posix.Types.OrphansSpec - default-language: Haskell2010 +-- This file has been generated from package.yaml by hpack version 0.5.4.+--+-- see: https://github.com/sol/hpack++name: base-orphans+version: 0.4.4+synopsis: Backwards-compatible orphan instances for base+homepage: https://github.com/haskell-compat/base-orphans#readme+bug-reports: https://github.com/haskell-compat/base-orphans/issues+license: MIT+license-file: LICENSE+author: Simon Hengel <sol@typeful.net>,+ João Cristóvão <jmacristovao@gmail.com>,+ Ryan Scott <ryan.gl.scott@ku.edu>+maintainer: Simon Hengel <sol@typeful.net>,+ João Cristóvão <jmacristovao@gmail.com>,+ Ryan Scott <ryan.gl.scott@ku.edu>+copyright: (c) 2012-2015 Simon Hengel,+ (c) 2014 João Cristóvão,+ (c) 2015 Ryan Scott+category: Compatibility+build-type: Simple+cabal-version: >= 1.10+description: @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 @<http://hackage.haskell.org/package/base-compat base-compat>@.+ See the README for what instances are covered: <https://github.com/haskell-compat/base-orphans#readme>. See also the <https://github.com/haskell-compat/base-orphans#what-is-not-covered what is not covered> section.++extra-source-files:+ CHANGES.markdown+ README.markdown++source-repository head+ type: git+ location: https://github.com/haskell-compat/base-orphans++library+ hs-source-dirs:+ src+ ghc-options: -Wall+ build-depends:+ base >= 4.3 && < 5+ , ghc-prim+ exposed-modules:+ Data.Orphans+ other-modules:+ Data.Orphans.Prelude+ default-language: Haskell2010++test-suite spec+ type: exitcode-stdio-1.0+ main-is: Spec.hs+ hs-source-dirs:+ test+ ghc-options: -Wall+ build-depends:+ base >= 4.3 && < 5+ , base-orphans+ , hspec == 2.*+ , QuickCheck+ other-modules:+ Control.Applicative.OrphansSpec+ Control.Exception.OrphansSpec+ Data.Bits.OrphansSpec+ Data.Foldable.OrphansSpec+ Data.Monoid.OrphansSpec+ Data.Traversable.OrphansSpec+ Data.Version.OrphansSpec+ Foreign.Storable.OrphansSpec+ GHC.Fingerprint.OrphansSpec+ System.Posix.Types.IntWord+ System.Posix.Types.OrphansSpec+ default-language: Haskell2010
src/Data/Orphans.hs view
@@ -1,865 +1,865 @@-{-# LANGUAGE CPP #-} -{-# LANGUAGE DeriveDataTypeable #-} -{-# LANGUAGE DeriveFoldable #-} -{-# LANGUAGE DeriveFunctor #-} -{-# LANGUAGE DeriveTraversable #-} -{-# LANGUAGE FlexibleContexts #-} -{-# LANGUAGE GeneralizedNewtypeDeriving #-} -{-# LANGUAGE StandaloneDeriving #-} -{-# LANGUAGE TypeFamilies #-} -{-# LANGUAGE TypeOperators #-} - -#if __GLASGOW_HASKELL__ >= 702 -{-# LANGUAGE Trustworthy #-} -#endif - -#if __GLASGOW_HASKELL__ >= 706 -{-# LANGUAGE PolyKinds #-} -#endif - -#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710 -{-# LANGUAGE DataKinds #-} -{-# LANGUAGE NullaryTypeClasses #-} -#endif - -{-# OPTIONS_GHC -fno-warn-deprecations #-} -{-# OPTIONS_GHC -fno-warn-orphans #-} -{-| -Exports orphan instances that mimic instances available in later versions of @base@. -To use them, simply @import Data.Orphans ()@. --} -module Data.Orphans () where - -#if !(MIN_VERSION_base(4,4,0)) -import Control.Monad.ST as Strict -#endif - -#if __GLASGOW_HASKELL__ >= 701 && __GLASGOW_HASKELL__ < 710 -import GHC.Generics as Generics -#endif - -#if __GLASGOW_HASKELL__ < 710 -import Control.Exception as Exception -import Control.Monad.ST.Lazy as Lazy -import Data.Data as Data -import qualified Data.Foldable as F (Foldable(..)) -import Data.Monoid as Monoid -import qualified Data.Traversable as T (Traversable(..)) -import GHC.Exts as Exts -import GHC.IO.Exception as Exception -import Text.ParserCombinators.ReadP as ReadP -import Text.ParserCombinators.ReadPrec as ReadPrec -import Text.Read as Read - -# if defined(mingw32_HOST_OS) -import GHC.ConsoleHandler as Console -# endif -#endif - -#if !(MIN_VERSION_base(4,8,0)) -import Data.Orphans.Prelude -#endif - -#include "HsBaseConfig.h" - -------------------------------------------------------------------------------- - -#if MIN_VERSION_base(4,4,0) && !(MIN_VERSION_base(4,7,0)) -instance Show Fingerprint where - show (Fingerprint w1 w2) = hex16 w1 ++ hex16 w2 - where - -- Formats a 64 bit number as 16 digits hex. - hex16 :: Word64 -> String - hex16 i = let hex = showHex i "" - in replicate (16 - length hex) '0' ++ hex -#endif - -#if !(MIN_VERSION_base(4,4,0)) -instance HasResolution a => Read (Fixed a) where - readsPrec _ = readsFixed - -readsFixed :: (HasResolution a) => ReadS (Fixed a) -readsFixed = readsSigned - where readsSigned ('-' : xs) = [ (negate x, rest) - | (x, rest) <- readsUnsigned xs ] - readsSigned xs = readsUnsigned xs - readsUnsigned xs = case span isDigit xs of - ([], _) -> [] - (is, xs') -> - let i = fromInteger (read is) - in case xs' of - '.' : xs'' -> - case span isDigit xs'' of - ([], _) -> [] - (js, xs''') -> - let j = fromInteger (read js) - l = genericLength js :: Integer - in [(i + (j / (10 ^ l)), xs''')] - _ -> [(i, xs')] - -deriving instance Typeable1 SampleVar - -instance Applicative (Strict.ST s) where - pure = return - (<*>) = ap - -instance Applicative (Lazy.ST s) where - pure = return - (<*>) = ap -#endif - --- These instances are only valid if Bits isn't a subclass of Num (as Bool is --- not a Num instance), which is only true as of base-4.6.0.0 and later. -#if MIN_VERSION_base(4,6,0) && !(MIN_VERSION_base(4,7,0)) -instance Bits Bool where - (.&.) = (&&) - - (.|.) = (||) - - xor = (/=) - - complement = not - - shift x 0 = x - shift _ _ = False - - rotate x _ = x - - bit 0 = True - bit _ = False - - testBit x 0 = x - testBit _ _ = False - - bitSize _ = 1 - - isSigned _ = False - - popCount False = 0 - popCount True = 1 -#endif - -#if !(MIN_VERSION_base(4,6,0)) -# if defined(HTYPE_DEV_T) -# if MIN_VERSION_base(4,5,0) -deriving instance Bits CDev -deriving instance Bounded CDev -deriving instance Integral CDev -# else -type HDev = HTYPE_DEV_T - -instance Bits CDev where - (.&.) = unsafeCoerce ((.&.) :: HDev -> HDev -> HDev) - (.|.) = unsafeCoerce ((.|.) :: HDev -> HDev -> HDev) - xor = unsafeCoerce (xor :: HDev -> HDev -> HDev) - shift = unsafeCoerce (shift :: HDev -> Int -> HDev) - rotate = unsafeCoerce (rotate :: HDev -> Int -> HDev) - setBit = unsafeCoerce (setBit :: HDev -> Int -> HDev) - clearBit = unsafeCoerce (clearBit :: HDev -> Int -> HDev) - complementBit = unsafeCoerce (complementBit :: HDev -> Int -> HDev) - testBit = unsafeCoerce (testBit :: HDev -> Int -> Bool) - complement = unsafeCoerce (complement :: HDev -> HDev) - bit = unsafeCoerce (bit :: Int -> HDev) - bitSize = unsafeCoerce (bitSize :: HDev -> Int) - isSigned = unsafeCoerce (isSigned :: HDev -> Bool) - -instance Bounded CDev where - minBound = unsafeCoerce (minBound :: HDev) - maxBound = unsafeCoerce (maxBound :: HDev) - -instance Integral CDev where - quot = unsafeCoerce (quot :: HDev -> HDev -> HDev) - rem = unsafeCoerce (rem :: HDev -> HDev -> HDev) - div = unsafeCoerce (div :: HDev -> HDev -> HDev) - mod = unsafeCoerce (mod :: HDev -> HDev -> HDev) - quotRem = unsafeCoerce (quotRem :: HDev -> HDev -> (HDev, HDev)) - divMod = unsafeCoerce (divMod :: HDev -> HDev -> (HDev, HDev)) - toInteger = unsafeCoerce (toInteger :: HDev -> Integer) -# endif -# endif - -instance Applicative ReadP where - pure = return - (<*>) = ap - -instance Alternative ReadP where - empty = mzero - (<|>) = mplus - -instance Applicative ReadPrec where - pure = return - (<*>) = ap - -instance Alternative ReadPrec where - empty = mzero - (<|>) = mplus - -instance Functor Exception.Handler where - fmap f (Exception.Handler h) = Exception.Handler (fmap f . h) - -instance -# if MIN_VERSION_base(4,4,0) - Arrow a -# else - ArrowApply a -# endif - => Functor (ArrowMonad a) where - fmap f (ArrowMonad m) = ArrowMonad $ m >>> arr f - -instance -# if MIN_VERSION_base(4,4,0) - Arrow a -# else - ArrowApply a -# endif - => Applicative (ArrowMonad a) where - pure x = ArrowMonad (arr (const x)) - ArrowMonad f <*> ArrowMonad x = ArrowMonad (f &&& x >>> arr (uncurry id)) - -instance -# if MIN_VERSION_base(4,4,0) - ArrowPlus a -# else - (ArrowApply a, ArrowPlus a) -# endif - => Alternative (ArrowMonad a) where - empty = ArrowMonad zeroArrow - ArrowMonad x <|> ArrowMonad y = ArrowMonad (x <+> y) - -instance (ArrowApply a, ArrowPlus a) => MonadPlus (ArrowMonad a) where - mzero = ArrowMonad zeroArrow - ArrowMonad x `mplus` ArrowMonad y = ArrowMonad (x <+> y) -#endif - -#if !(MIN_VERSION_base(4,7,0)) -deriving instance F.Foldable (Const m) -deriving instance F.Foldable (Either a) -deriving instance T.Traversable (Const m) -deriving instance T.Traversable (Either a) - -instance F.Foldable ((,) a) where - foldMap f (_, y) = f y - - foldr f z (_, y) = f y z - -instance T.Traversable ((,) a) where - traverse f (x, y) = (,) x <$> f y - -deriving instance Monoid a => Monoid (Const a b) -deriving instance Read a => Read (Down a) -deriving instance Show a => Show (Down a) -deriving instance Eq ErrorCall -deriving instance Ord ErrorCall -deriving instance Num a => Num (Sum a) -deriving instance Num a => Num (Product a) -deriving instance Data Version --- GHC Trac #8218 -deriving instance Monad m => Monad (WrappedMonad m) -deriving instance Eq a => Eq (ZipList a) -deriving instance Ord a => Ord (ZipList a) -deriving instance Read a => Read (ZipList a) -deriving instance Show a => Show (ZipList a) -deriving instance Functor ArgOrder -deriving instance Functor OptDescr -deriving instance Functor ArgDescr -#endif - -#if __GLASGOW_HASKELL__ >= 701 && !(MIN_VERSION_base(4,7,0)) -deriving instance Eq (U1 p) -deriving instance Ord (U1 p) -deriving instance Read (U1 p) -deriving instance Show (U1 p) - -deriving instance Eq p => Eq (Par1 p) -deriving instance Ord p => Ord (Par1 p) -deriving instance Read p => Read (Par1 p) -deriving instance Show p => Show (Par1 p) - -deriving instance Eq (f p) => Eq (Rec1 f p) -deriving instance Ord (f p) => Ord (Rec1 f p) -deriving instance Read (f p) => Read (Rec1 f p) -deriving instance Show (f p) => Show (Rec1 f p) - -deriving instance Eq c => Eq (K1 i c p) -deriving instance Ord c => Ord (K1 i c p) -deriving instance Read c => Read (K1 i c p) -deriving instance Show c => Show (K1 i c p) - -deriving instance Eq (f p) => Eq (M1 i c f p) -deriving instance Ord (f p) => Ord (M1 i c f p) -deriving instance Read (f p) => Read (M1 i c f p) -deriving instance Show (f p) => Show (M1 i c f p) - -deriving instance (Eq (f p), Eq (g p)) => Eq ((f :+: g) p) -deriving instance (Ord (f p), Ord (g p)) => Ord ((f :+: g) p) -deriving instance (Read (f p), Read (g p)) => Read ((f :+: g) p) -deriving instance (Show (f p), Show (g p)) => Show ((f :+: g) p) - -deriving instance (Eq (f p), Eq (g p)) => Eq ((f :*: g) p) -deriving instance (Ord (f p), Ord (g p)) => Ord ((f :*: g) p) --- Due to a GHC bug (https://ghc.haskell.org/trac/ghc/ticket/9830), the derived --- Read and Show instances for infix data constructors will use the wrong --- precedence (prior to GHC 7.10). --- We'll manually derive Read :*: and Show :*: instances to avoid this. -instance (Read (f p), Read (g p)) => Read ((f :*: g) p) where - readPrec = parens . ReadPrec.prec 6 $ do - fp <- ReadPrec.step readPrec - Symbol ":*:" <- lexP - gp <- ReadPrec.step readPrec - return $ fp :*: gp - readListPrec = readListPrecDefault -instance (Show (f p), Show (g p)) => Show ((f :*: g) p) where - showsPrec p (l :*: r) = showParen (p > sixPrec) $ - showsPrec (sixPrec + 1) l - . showString " :*: " - . showsPrec (sixPrec + 1) r - where sixPrec = 6 - -deriving instance Eq (f (g p)) => Eq ((f :.: g) p) -deriving instance Ord (f (g p)) => Ord ((f :.: g) p) -deriving instance Read (f (g p)) => Read ((f :.: g) p) -deriving instance Show (f (g p)) => Show ((f :.: g) p) -#endif - -#if MIN_VERSION_base(4,7,0) && !(MIN_VERSION_base(4,8,0)) --- | Construct tag-less 'Version' --- --- /Since: 4.8.0.0/ -makeVersion :: [Int] -> Version -makeVersion b = Version b [] - --- | /Since: 4.8.0.0/ -instance IsList Version where - type (Item Version) = Int - fromList = makeVersion - toList = versionBranch -#endif - -#if !(MIN_VERSION_base(4,8,0)) -deriving instance Eq a => Eq (Const a b) -deriving instance Ord a => Ord (Const a b) - -instance Read a => Read (Const a b) where - readsPrec d = readParen (d > 10) - $ \r -> [(Const x,t) | ("Const", s) <- lex r, (x, t) <- readsPrec 11 s] - -instance Show a => Show (Const a b) where - showsPrec d (Const x) = showParen (d > 10) $ - showString "Const " . showsPrec 11 x - -deriving instance Functor First -deriving instance Applicative First -deriving instance Monad First -deriving instance Functor Last -deriving instance Applicative Last -deriving instance Monad Last - --- In base-4.3 and earlier, pattern matching on a Complex value invokes a --- RealFloat constraint due to the use of the DatatypeContexts extension. -# if MIN_VERSION_base(4,4,0) -instance Storable a -# else -instance (Storable a, RealFloat a) -# endif - => Storable (Complex a) where - sizeOf (a :+ _) = 2 * sizeOf a - alignment (a :+ _) = alignment a - peek p = do - q <- return $ castPtr p - r <- peek q - i <- peekElemOff q 1 - return (r :+ i) - poke p (r :+ i) = do - q <-return $ (castPtr p) - poke q r - pokeElemOff q 1 i - -instance (Storable a, Integral a) => Storable (Ratio a) where - sizeOf (n :% _) = 2 * sizeOf n - alignment (n :% _) = alignment n - peek p = do - q <- return $ castPtr p - r <- peek q - i <- peekElemOff q 1 - return (r % i) - poke p (r :% i) = do - q <-return $ (castPtr p) - poke q r - pokeElemOff q 1 i -#endif - -#if __GLASGOW_HASKELL__ < 710 -deriving instance Typeable All -deriving instance Typeable AnnotationWrapper -deriving instance Typeable Monoid.Any -deriving instance Typeable1 ArgDescr -deriving instance Typeable1 ArgOrder -deriving instance Typeable BlockReason -deriving instance Typeable1 Buffer -deriving instance Typeable3 BufferCodec -deriving instance Typeable1 BufferList -deriving instance Typeable BufferMode -deriving instance Typeable BufferState -deriving instance Typeable CFile -deriving instance Typeable CFpos -deriving instance Typeable CJmpBuf -deriving instance Typeable2 Const -deriving instance Typeable Constr -deriving instance Typeable ConstrRep -deriving instance Typeable DataRep -deriving instance Typeable DataType -deriving instance Typeable1 Dual -deriving instance Typeable1 Endo -deriving instance Typeable Errno -deriving instance Typeable1 First -deriving instance Typeable Data.Fixity -deriving instance Typeable GeneralCategory -deriving instance Typeable HandlePosn -deriving instance Typeable1 Exception.Handler -deriving instance Typeable HandleType -deriving instance Typeable IODeviceType -deriving instance Typeable IOErrorType -deriving instance Typeable IOMode -deriving instance Typeable1 Last -deriving instance Typeable Lexeme -deriving instance Typeable Newline -deriving instance Typeable NewlineMode -deriving instance Typeable Opaque -deriving instance Typeable1 OptDescr -deriving instance Typeable Pool -deriving instance Typeable1 Product -deriving instance Typeable1 ReadP -deriving instance Typeable1 ReadPrec -deriving instance Typeable SeekMode -deriving instance Typeable2 Lazy.ST -deriving instance Typeable2 STret -deriving instance Typeable1 Sum -deriving instance Typeable TextEncoding -deriving instance Typeable ThreadStatus -deriving instance Typeable1 ZipList - -# if defined(mingw32_HOST_OS) -deriving instance Typeable CodePageArrays -deriving instance Typeable2 CompactArray -deriving instance Typeable1 ConvArray -deriving instance Typeable Console.Handler -# endif - -# if MIN_VERSION_base(4,3,0) -deriving instance Typeable MaskingState -# endif - -# if MIN_VERSION_base(4,4,0) -deriving instance Typeable CodingFailureMode -deriving instance Typeable CodingProgress -deriving instance Typeable Fingerprint - -# if !defined(mingw32_HOST_OS) && !defined(__GHCJS__) -deriving instance Typeable Event -deriving instance Typeable EventManager -deriving instance Typeable FdKey -deriving instance Typeable TimeoutKey -# endif -# endif - -# if __GLASGOW_HASKELL__ >= 701 -deriving instance Typeable Arity -deriving instance Typeable Associativity -deriving instance Typeable C -deriving instance Typeable D -deriving instance Typeable Generics.Fixity -deriving instance Typeable3 K1 -deriving instance Typeable NoSelector -deriving instance Typeable P -deriving instance Typeable1 Par1 -deriving instance Typeable R -deriving instance Typeable S -deriving instance Typeable1 U1 -deriving instance Typeable1 V1 -# endif - -# if MIN_VERSION_base(4,5,0) -deriving instance Typeable CostCentre -deriving instance Typeable CostCentreStack -deriving instance Typeable GCStats -# endif - -# if MIN_VERSION_base(4,6,0) -deriving instance Typeable CSigset -deriving instance Typeable1 Down -deriving instance Typeable ForeignPtrContents -deriving instance Typeable Nat -deriving instance Typeable1 NoIO -deriving instance Typeable Symbol -# endif - -# if MIN_VERSION_ghc_prim(0,3,1) -deriving instance Typeable SPEC -# endif - -# if MIN_VERSION_base(4,7,0) -deriving instance Typeable FieldFormat -deriving instance Typeable FormatAdjustment -deriving instance Typeable FormatParse -deriving instance Typeable FormatSign -deriving instance Typeable KProxy -deriving instance Typeable Number -deriving instance Typeable SomeNat -deriving instance Typeable SomeSymbol -deriving instance Typeable QSem -- This instance seems to have been removed - -- (accidentally?) in base-4.7.0.0 -# endif - -# if __GLASGOW_HASKELL__ >= 708 --- Data types which have more than seven type arguments -deriving instance Typeable (,,,,,,,) -deriving instance Typeable (,,,,,,,,) -deriving instance Typeable (,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) - --- Data types which require PolyKinds -deriving instance Typeable (:+:) -deriving instance Typeable (:*:) -deriving instance Typeable (:.:) -deriving instance Typeable Exts.Any -deriving instance Typeable ArrowMonad -deriving instance Typeable Kleisli -deriving instance Typeable M1 -deriving instance Typeable Rec1 -deriving instance Typeable WrappedArrow -deriving instance Typeable WrappedMonad - --- Typeclasses -deriving instance Typeable Arrow -deriving instance Typeable ArrowApply -deriving instance Typeable ArrowChoice -deriving instance Typeable ArrowLoop -deriving instance Typeable ArrowZero -deriving instance Typeable Bits -deriving instance Typeable Bounded -deriving instance Typeable BufferedIO -deriving instance Typeable Category -deriving instance Typeable Coercible -deriving instance Typeable Constructor -deriving instance Typeable Data -deriving instance Typeable Datatype -deriving instance Typeable Enum -deriving instance Typeable Exception -deriving instance Typeable Eq -deriving instance Typeable FiniteBits -deriving instance Typeable Floating -deriving instance Typeable F.Foldable -deriving instance Typeable Fractional -deriving instance Typeable Functor -deriving instance Typeable Generic -deriving instance Typeable Generic1 -deriving instance Typeable GHCiSandboxIO -deriving instance Typeable HasResolution -deriving instance Typeable HPrintfType -deriving instance Typeable Integral -deriving instance Typeable IODevice -deriving instance Typeable IP -deriving instance Typeable IsChar -deriving instance Typeable IsList -deriving instance Typeable IsString -deriving instance Typeable Ix -deriving instance Typeable KnownNat -deriving instance Typeable KnownSymbol -deriving instance Typeable Monad -deriving instance Typeable MonadFix -deriving instance Typeable MonadPlus -deriving instance Typeable MonadZip -deriving instance Typeable Num -deriving instance Typeable Ord -deriving instance Typeable PrintfArg -deriving instance Typeable PrintfType -deriving instance Typeable RawIO -deriving instance Typeable Read -deriving instance Typeable Real -deriving instance Typeable RealFloat -deriving instance Typeable RealFrac -deriving instance Typeable Selector -deriving instance Typeable Show -deriving instance Typeable Storable -deriving instance Typeable TestCoercion -deriving instance Typeable TestEquality -deriving instance Typeable T.Traversable -deriving instance Typeable Typeable - --- Constraints -deriving instance Typeable (~) -deriving instance Typeable Constraint - --- Promoted data constructors -deriving instance Typeable '() -deriving instance Typeable '(,) -deriving instance Typeable '(,,) -deriving instance Typeable '(,,,) -deriving instance Typeable '(,,,,) -deriving instance Typeable '(,,,,,) -deriving instance Typeable '(,,,,,,) -deriving instance Typeable '(,,,,,,,) -deriving instance Typeable '(,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) -deriving instance Typeable '[] -deriving instance Typeable '(:) -deriving instance Typeable '(:%) -deriving instance Typeable '(:+) -deriving instance Typeable 'AbsoluteSeek -deriving instance Typeable 'All -deriving instance Typeable 'AlreadyExists -deriving instance Typeable 'Any -deriving instance Typeable 'AppendHandle -deriving instance Typeable 'AppendMode -deriving instance Typeable 'BlockedIndefinitelyOnMVar -deriving instance Typeable 'BlockedIndefinitelyOnSTM -deriving instance Typeable 'BlockedOnBlackHole -deriving instance Typeable 'BlockedOnException -deriving instance Typeable 'BlockedOnForeignCall -deriving instance Typeable 'BlockedOnMVar -deriving instance Typeable 'BlockedOnOther -deriving instance Typeable 'BlockedOnSTM -deriving instance Typeable 'ClosedHandle -deriving instance Typeable 'ClosePunctuation -deriving instance Typeable 'ConnectorPunctuation -deriving instance Typeable 'Const -deriving instance Typeable 'Control -deriving instance Typeable 'CRLF -deriving instance Typeable 'CurrencySymbol -deriving instance Typeable 'DashPunctuation -deriving instance Typeable 'Deadlock -deriving instance Typeable 'DecimalNumber -deriving instance Typeable 'Denormal -deriving instance Typeable 'Directory -deriving instance Typeable 'DivideByZero -deriving instance Typeable 'Down -deriving instance Typeable 'Dual -deriving instance Typeable 'EnclosingMark -deriving instance Typeable 'Endo -deriving instance Typeable 'Exception.EOF -deriving instance Typeable 'EQ -deriving instance Typeable 'ErrorOnCodingFailure -deriving instance Typeable 'False -deriving instance Typeable 'FinalQuote -deriving instance Typeable 'First -deriving instance Typeable 'ForceSpecConstr -deriving instance Typeable 'Format -deriving instance Typeable 'GT -deriving instance Typeable 'HardwareFault -deriving instance Typeable 'HeapOverflow -deriving instance Typeable 'IgnoreCodingFailure -deriving instance Typeable 'IllegalOperation -deriving instance Typeable 'InappropriateType -deriving instance Typeable 'Data.Infix -deriving instance Typeable 'InitialQuote -deriving instance Typeable 'InputUnderflow -deriving instance Typeable 'Interrupted -deriving instance Typeable 'InvalidArgument -deriving instance Typeable 'InvalidSequence -deriving instance Typeable 'Just -deriving instance Typeable 'K1 -deriving instance Typeable 'KProxy -deriving instance Typeable 'Last -deriving instance Typeable 'Left -deriving instance Typeable 'LeftAdjust -deriving instance Typeable 'LeftAssociative -deriving instance Typeable 'LetterNumber -deriving instance Typeable 'LF -deriving instance Typeable 'LineSeparator -deriving instance Typeable 'LossOfPrecision -deriving instance Typeable 'LowercaseLetter -deriving instance Typeable 'LT -deriving instance Typeable 'MaskedInterruptible -deriving instance Typeable 'MaskedUninterruptible -deriving instance Typeable 'MathSymbol -deriving instance Typeable 'ModifierLetter -deriving instance Typeable 'ModifierSymbol -deriving instance Typeable 'NestedAtomically -deriving instance Typeable 'NewlineMode -deriving instance Typeable 'NonSpacingMark -deriving instance Typeable 'NonTermination -deriving instance Typeable 'NoSpecConstr -deriving instance Typeable 'NoSuchThing -deriving instance Typeable 'NotAssigned -deriving instance Typeable 'NotAssociative -deriving instance Typeable 'Nothing -deriving instance Typeable 'O -deriving instance Typeable 'OpenPunctuation -deriving instance Typeable 'OtherError -deriving instance Typeable 'OtherLetter -deriving instance Typeable 'OtherNumber -deriving instance Typeable 'OtherPunctuation -deriving instance Typeable 'OtherSymbol -deriving instance Typeable 'OutputUnderflow -deriving instance Typeable 'Overflow -deriving instance Typeable 'Par1 -deriving instance Typeable 'ParagraphSeparator -deriving instance Typeable 'PermissionDenied -deriving instance Typeable 'Data.Prefix -deriving instance Typeable 'PrivateUse -deriving instance Typeable 'Product -deriving instance Typeable 'ProtocolError -deriving instance Typeable 'RatioZeroDenominator -deriving instance Typeable 'RawDevice -deriving instance Typeable 'ReadBuffer -deriving instance Typeable 'ReadHandle -deriving instance Typeable 'ReadMode -deriving instance Typeable 'ReadWriteHandle -deriving instance Typeable 'ReadWriteMode -deriving instance Typeable 'RegularFile -deriving instance Typeable 'RelativeSeek -deriving instance Typeable 'ResourceBusy -deriving instance Typeable 'ResourceExhausted -deriving instance Typeable 'ResourceVanished -deriving instance Typeable 'Right -deriving instance Typeable 'RightAssociative -deriving instance Typeable 'RoundtripFailure -deriving instance Typeable 'SeekFromEnd -deriving instance Typeable 'SemiClosedHandle -deriving instance Typeable 'SignPlus -deriving instance Typeable 'SignSpace -deriving instance Typeable 'Space -deriving instance Typeable 'SpacingCombiningMark -deriving instance Typeable 'SPEC -deriving instance Typeable 'SPEC2 -deriving instance Typeable 'StackOverflow -deriving instance Typeable 'Stream -deriving instance Typeable 'Sum -deriving instance Typeable 'Surrogate -deriving instance Typeable 'SystemError -deriving instance Typeable 'ThreadBlocked -deriving instance Typeable 'ThreadDied -deriving instance Typeable 'ThreadFinished -deriving instance Typeable 'ThreadKilled -deriving instance Typeable 'ThreadRunning -deriving instance Typeable 'TimeExpired -deriving instance Typeable 'TitlecaseLetter -deriving instance Typeable 'TransliterateCodingFailure -deriving instance Typeable 'True -deriving instance Typeable 'U1 -deriving instance Typeable 'Underflow -deriving instance Typeable 'Unmasked -deriving instance Typeable 'UnsatisfiedConstraints -deriving instance Typeable 'UnsupportedOperation -deriving instance Typeable 'UppercaseLetter -deriving instance Typeable 'UserError -deriving instance Typeable 'UserInterrupt -deriving instance Typeable 'WriteBuffer -deriving instance Typeable 'WriteHandle -deriving instance Typeable 'WriteMode -deriving instance Typeable 'ZeroPad -deriving instance Typeable 'ZipList - -# if defined(mingw32_HOST_OS) -deriving instance Typeable 'Break -deriving instance Typeable 'Close -deriving instance Typeable 'ControlC -deriving instance Typeable 'Logoff -deriving instance Typeable 'Shutdown -# endif -# endif - -#endif +{-# LANGUAGE CPP #-}+{-# LANGUAGE DeriveDataTypeable #-}+{-# LANGUAGE DeriveFoldable #-}+{-# LANGUAGE DeriveFunctor #-}+{-# LANGUAGE DeriveTraversable #-}+{-# LANGUAGE FlexibleContexts #-}+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+{-# LANGUAGE StandaloneDeriving #-}+{-# LANGUAGE TypeFamilies #-}+{-# LANGUAGE TypeOperators #-}++#if __GLASGOW_HASKELL__ >= 702+{-# LANGUAGE Trustworthy #-}+#endif++#if __GLASGOW_HASKELL__ >= 706+{-# LANGUAGE PolyKinds #-}+#endif++#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE NullaryTypeClasses #-}+#endif++{-# OPTIONS_GHC -fno-warn-deprecations #-}+{-# OPTIONS_GHC -fno-warn-orphans #-}+{-|+Exports orphan instances that mimic instances available in later versions of @base@.+To use them, simply @import Data.Orphans ()@.+-}+module Data.Orphans () where++#if !(MIN_VERSION_base(4,4,0))+import Control.Monad.ST as Strict+#endif++#if __GLASGOW_HASKELL__ >= 701 && __GLASGOW_HASKELL__ < 710+import GHC.Generics as Generics+#endif++#if __GLASGOW_HASKELL__ < 710+import Control.Exception as Exception+import Control.Monad.ST.Lazy as Lazy+import Data.Data as Data+import qualified Data.Foldable as F (Foldable(..))+import Data.Monoid as Monoid+import qualified Data.Traversable as T (Traversable(..))+import GHC.Exts as Exts+import GHC.IO.Exception as Exception+import Text.ParserCombinators.ReadP as ReadP+import Text.ParserCombinators.ReadPrec as ReadPrec+import Text.Read as Read++# if defined(mingw32_HOST_OS)+import GHC.ConsoleHandler as Console+# endif+#endif++#if !(MIN_VERSION_base(4,8,0))+import Data.Orphans.Prelude+#endif++#include "HsBaseConfig.h"++-------------------------------------------------------------------------------++#if MIN_VERSION_base(4,4,0) && !(MIN_VERSION_base(4,7,0))+instance Show Fingerprint where+ show (Fingerprint w1 w2) = hex16 w1 ++ hex16 w2+ where+ -- Formats a 64 bit number as 16 digits hex.+ hex16 :: Word64 -> String+ hex16 i = let hex = showHex i ""+ in replicate (16 - length hex) '0' ++ hex+#endif++#if !(MIN_VERSION_base(4,4,0))+instance HasResolution a => Read (Fixed a) where+ readsPrec _ = readsFixed++readsFixed :: (HasResolution a) => ReadS (Fixed a)+readsFixed = readsSigned+ where readsSigned ('-' : xs) = [ (negate x, rest)+ | (x, rest) <- readsUnsigned xs ]+ readsSigned xs = readsUnsigned xs+ readsUnsigned xs = case span isDigit xs of+ ([], _) -> []+ (is, xs') ->+ let i = fromInteger (read is)+ in case xs' of+ '.' : xs'' ->+ case span isDigit xs'' of+ ([], _) -> []+ (js, xs''') ->+ let j = fromInteger (read js)+ l = genericLength js :: Integer+ in [(i + (j / (10 ^ l)), xs''')]+ _ -> [(i, xs')]++deriving instance Typeable1 SampleVar++instance Applicative (Strict.ST s) where+ pure = return+ (<*>) = ap++instance Applicative (Lazy.ST s) where+ pure = return+ (<*>) = ap+#endif++-- These instances are only valid if Bits isn't a subclass of Num (as Bool is+-- not a Num instance), which is only true as of base-4.6.0.0 and later.+#if MIN_VERSION_base(4,6,0) && !(MIN_VERSION_base(4,7,0))+instance Bits Bool where+ (.&.) = (&&)++ (.|.) = (||)++ xor = (/=)++ complement = not++ shift x 0 = x+ shift _ _ = False++ rotate x _ = x++ bit 0 = True+ bit _ = False++ testBit x 0 = x+ testBit _ _ = False++ bitSize _ = 1++ isSigned _ = False++ popCount False = 0+ popCount True = 1+#endif++#if !(MIN_VERSION_base(4,6,0))+# if defined(HTYPE_DEV_T)+# if MIN_VERSION_base(4,5,0)+deriving instance Bits CDev+deriving instance Bounded CDev+deriving instance Integral CDev+# else+type HDev = HTYPE_DEV_T++instance Bits CDev where+ (.&.) = unsafeCoerce ((.&.) :: HDev -> HDev -> HDev)+ (.|.) = unsafeCoerce ((.|.) :: HDev -> HDev -> HDev)+ xor = unsafeCoerce (xor :: HDev -> HDev -> HDev)+ shift = unsafeCoerce (shift :: HDev -> Int -> HDev)+ rotate = unsafeCoerce (rotate :: HDev -> Int -> HDev)+ setBit = unsafeCoerce (setBit :: HDev -> Int -> HDev)+ clearBit = unsafeCoerce (clearBit :: HDev -> Int -> HDev)+ complementBit = unsafeCoerce (complementBit :: HDev -> Int -> HDev)+ testBit = unsafeCoerce (testBit :: HDev -> Int -> Bool)+ complement = unsafeCoerce (complement :: HDev -> HDev)+ bit = unsafeCoerce (bit :: Int -> HDev)+ bitSize = unsafeCoerce (bitSize :: HDev -> Int)+ isSigned = unsafeCoerce (isSigned :: HDev -> Bool)++instance Bounded CDev where+ minBound = unsafeCoerce (minBound :: HDev)+ maxBound = unsafeCoerce (maxBound :: HDev)++instance Integral CDev where+ quot = unsafeCoerce (quot :: HDev -> HDev -> HDev)+ rem = unsafeCoerce (rem :: HDev -> HDev -> HDev)+ div = unsafeCoerce (div :: HDev -> HDev -> HDev)+ mod = unsafeCoerce (mod :: HDev -> HDev -> HDev)+ quotRem = unsafeCoerce (quotRem :: HDev -> HDev -> (HDev, HDev))+ divMod = unsafeCoerce (divMod :: HDev -> HDev -> (HDev, HDev))+ toInteger = unsafeCoerce (toInteger :: HDev -> Integer)+# endif+# endif++instance Applicative ReadP where+ pure = return+ (<*>) = ap++instance Alternative ReadP where+ empty = mzero+ (<|>) = mplus++instance Applicative ReadPrec where+ pure = return+ (<*>) = ap++instance Alternative ReadPrec where+ empty = mzero+ (<|>) = mplus++instance Functor Exception.Handler where+ fmap f (Exception.Handler h) = Exception.Handler (fmap f . h)++instance+# if MIN_VERSION_base(4,4,0)+ Arrow a+# else+ ArrowApply a+# endif+ => Functor (ArrowMonad a) where+ fmap f (ArrowMonad m) = ArrowMonad $ m >>> arr f++instance+# if MIN_VERSION_base(4,4,0)+ Arrow a+# else+ ArrowApply a+# endif+ => Applicative (ArrowMonad a) where+ pure x = ArrowMonad (arr (const x))+ ArrowMonad f <*> ArrowMonad x = ArrowMonad (f &&& x >>> arr (uncurry id))++instance+# if MIN_VERSION_base(4,4,0)+ ArrowPlus a+# else+ (ArrowApply a, ArrowPlus a)+# endif+ => Alternative (ArrowMonad a) where+ empty = ArrowMonad zeroArrow+ ArrowMonad x <|> ArrowMonad y = ArrowMonad (x <+> y)++instance (ArrowApply a, ArrowPlus a) => MonadPlus (ArrowMonad a) where+ mzero = ArrowMonad zeroArrow+ ArrowMonad x `mplus` ArrowMonad y = ArrowMonad (x <+> y)+#endif++#if !(MIN_VERSION_base(4,7,0))+deriving instance F.Foldable (Const m)+deriving instance F.Foldable (Either a)+deriving instance T.Traversable (Const m)+deriving instance T.Traversable (Either a)++instance F.Foldable ((,) a) where+ foldMap f (_, y) = f y++ foldr f z (_, y) = f y z++instance T.Traversable ((,) a) where+ traverse f (x, y) = (,) x <$> f y++deriving instance Monoid a => Monoid (Const a b)+deriving instance Read a => Read (Down a)+deriving instance Show a => Show (Down a)+deriving instance Eq ErrorCall+deriving instance Ord ErrorCall+deriving instance Num a => Num (Sum a)+deriving instance Num a => Num (Product a)+deriving instance Data Version+-- GHC Trac #8218+deriving instance Monad m => Monad (WrappedMonad m)+deriving instance Eq a => Eq (ZipList a)+deriving instance Ord a => Ord (ZipList a)+deriving instance Read a => Read (ZipList a)+deriving instance Show a => Show (ZipList a)+deriving instance Functor ArgOrder+deriving instance Functor OptDescr+deriving instance Functor ArgDescr+#endif++#if __GLASGOW_HASKELL__ >= 701 && !(MIN_VERSION_base(4,7,0))+deriving instance Eq (U1 p)+deriving instance Ord (U1 p)+deriving instance Read (U1 p)+deriving instance Show (U1 p)++deriving instance Eq p => Eq (Par1 p)+deriving instance Ord p => Ord (Par1 p)+deriving instance Read p => Read (Par1 p)+deriving instance Show p => Show (Par1 p)++deriving instance Eq (f p) => Eq (Rec1 f p)+deriving instance Ord (f p) => Ord (Rec1 f p)+deriving instance Read (f p) => Read (Rec1 f p)+deriving instance Show (f p) => Show (Rec1 f p)++deriving instance Eq c => Eq (K1 i c p)+deriving instance Ord c => Ord (K1 i c p)+deriving instance Read c => Read (K1 i c p)+deriving instance Show c => Show (K1 i c p)++deriving instance Eq (f p) => Eq (M1 i c f p)+deriving instance Ord (f p) => Ord (M1 i c f p)+deriving instance Read (f p) => Read (M1 i c f p)+deriving instance Show (f p) => Show (M1 i c f p)++deriving instance (Eq (f p), Eq (g p)) => Eq ((f :+: g) p)+deriving instance (Ord (f p), Ord (g p)) => Ord ((f :+: g) p)+deriving instance (Read (f p), Read (g p)) => Read ((f :+: g) p)+deriving instance (Show (f p), Show (g p)) => Show ((f :+: g) p)++deriving instance (Eq (f p), Eq (g p)) => Eq ((f :*: g) p)+deriving instance (Ord (f p), Ord (g p)) => Ord ((f :*: g) p)+-- Due to a GHC bug (https://ghc.haskell.org/trac/ghc/ticket/9830), the derived+-- Read and Show instances for infix data constructors will use the wrong+-- precedence (prior to GHC 7.10).+-- We'll manually derive Read :*: and Show :*: instances to avoid this.+instance (Read (f p), Read (g p)) => Read ((f :*: g) p) where+ readPrec = parens . ReadPrec.prec 6 $ do+ fp <- ReadPrec.step readPrec+ Symbol ":*:" <- lexP+ gp <- ReadPrec.step readPrec+ return $ fp :*: gp+ readListPrec = readListPrecDefault+instance (Show (f p), Show (g p)) => Show ((f :*: g) p) where+ showsPrec p (l :*: r) = showParen (p > sixPrec) $+ showsPrec (sixPrec + 1) l+ . showString " :*: "+ . showsPrec (sixPrec + 1) r+ where sixPrec = 6++deriving instance Eq (f (g p)) => Eq ((f :.: g) p)+deriving instance Ord (f (g p)) => Ord ((f :.: g) p)+deriving instance Read (f (g p)) => Read ((f :.: g) p)+deriving instance Show (f (g p)) => Show ((f :.: g) p)+#endif++#if MIN_VERSION_base(4,7,0) && !(MIN_VERSION_base(4,8,0))+-- | Construct tag-less 'Version'+--+-- /Since: 4.8.0.0/+makeVersion :: [Int] -> Version+makeVersion b = Version b []++-- | /Since: 4.8.0.0/+instance IsList Version where+ type (Item Version) = Int+ fromList = makeVersion+ toList = versionBranch+#endif++#if !(MIN_VERSION_base(4,8,0))+deriving instance Eq a => Eq (Const a b)+deriving instance Ord a => Ord (Const a b)++instance Read a => Read (Const a b) where+ readsPrec d = readParen (d > 10)+ $ \r -> [(Const x,t) | ("Const", s) <- lex r, (x, t) <- readsPrec 11 s]++instance Show a => Show (Const a b) where+ showsPrec d (Const x) = showParen (d > 10) $+ showString "Const " . showsPrec 11 x++deriving instance Functor First+deriving instance Applicative First+deriving instance Monad First+deriving instance Functor Last+deriving instance Applicative Last+deriving instance Monad Last++-- In base-4.3 and earlier, pattern matching on a Complex value invokes a+-- RealFloat constraint due to the use of the DatatypeContexts extension.+# if MIN_VERSION_base(4,4,0)+instance Storable a+# else+instance (Storable a, RealFloat a)+# endif+ => Storable (Complex a) where+ sizeOf (a :+ _) = 2 * sizeOf a+ alignment (a :+ _) = alignment a+ peek p = do+ q <- return $ castPtr p+ r <- peek q+ i <- peekElemOff q 1+ return (r :+ i)+ poke p (r :+ i) = do+ q <-return $ (castPtr p)+ poke q r+ pokeElemOff q 1 i++instance (Storable a, Integral a) => Storable (Ratio a) where+ sizeOf (n :% _) = 2 * sizeOf n+ alignment (n :% _) = alignment n+ peek p = do+ q <- return $ castPtr p+ r <- peek q+ i <- peekElemOff q 1+ return (r % i)+ poke p (r :% i) = do+ q <-return $ (castPtr p)+ poke q r+ pokeElemOff q 1 i+#endif++#if __GLASGOW_HASKELL__ < 710+deriving instance Typeable All+deriving instance Typeable AnnotationWrapper+deriving instance Typeable Monoid.Any+deriving instance Typeable1 ArgDescr+deriving instance Typeable1 ArgOrder+deriving instance Typeable BlockReason+deriving instance Typeable1 Buffer+deriving instance Typeable3 BufferCodec+deriving instance Typeable1 BufferList+deriving instance Typeable BufferMode+deriving instance Typeable BufferState+deriving instance Typeable CFile+deriving instance Typeable CFpos+deriving instance Typeable CJmpBuf+deriving instance Typeable2 Const+deriving instance Typeable Constr+deriving instance Typeable ConstrRep+deriving instance Typeable DataRep+deriving instance Typeable DataType+deriving instance Typeable1 Dual+deriving instance Typeable1 Endo+deriving instance Typeable Errno+deriving instance Typeable1 First+deriving instance Typeable Data.Fixity+deriving instance Typeable GeneralCategory+deriving instance Typeable HandlePosn+deriving instance Typeable1 Exception.Handler+deriving instance Typeable HandleType+deriving instance Typeable IODeviceType+deriving instance Typeable IOErrorType+deriving instance Typeable IOMode+deriving instance Typeable1 Last+deriving instance Typeable Lexeme+deriving instance Typeable Newline+deriving instance Typeable NewlineMode+deriving instance Typeable Opaque+deriving instance Typeable1 OptDescr+deriving instance Typeable Pool+deriving instance Typeable1 Product+deriving instance Typeable1 ReadP+deriving instance Typeable1 ReadPrec+deriving instance Typeable SeekMode+deriving instance Typeable2 Lazy.ST+deriving instance Typeable2 STret+deriving instance Typeable1 Sum+deriving instance Typeable TextEncoding+deriving instance Typeable ThreadStatus+deriving instance Typeable1 ZipList++# if defined(mingw32_HOST_OS)+deriving instance Typeable CodePageArrays+deriving instance Typeable2 CompactArray+deriving instance Typeable1 ConvArray+deriving instance Typeable Console.Handler+# endif++# if MIN_VERSION_base(4,3,0)+deriving instance Typeable MaskingState+# endif++# if MIN_VERSION_base(4,4,0)+deriving instance Typeable CodingFailureMode+deriving instance Typeable CodingProgress+deriving instance Typeable Fingerprint++# if !defined(mingw32_HOST_OS) && !defined(__GHCJS__)+deriving instance Typeable Event+deriving instance Typeable EventManager+deriving instance Typeable FdKey+deriving instance Typeable TimeoutKey+# endif+# endif++# if __GLASGOW_HASKELL__ >= 701+deriving instance Typeable Arity+deriving instance Typeable Associativity+deriving instance Typeable C+deriving instance Typeable D+deriving instance Typeable Generics.Fixity+deriving instance Typeable3 K1+deriving instance Typeable NoSelector+deriving instance Typeable P+deriving instance Typeable1 Par1+deriving instance Typeable R+deriving instance Typeable S+deriving instance Typeable1 U1+deriving instance Typeable1 V1+# endif++# if MIN_VERSION_base(4,5,0)+deriving instance Typeable CostCentre+deriving instance Typeable CostCentreStack+deriving instance Typeable GCStats+# endif++# if MIN_VERSION_base(4,6,0)+deriving instance Typeable CSigset+deriving instance Typeable1 Down+deriving instance Typeable ForeignPtrContents+deriving instance Typeable Nat+deriving instance Typeable1 NoIO+deriving instance Typeable Symbol+# endif++# if MIN_VERSION_ghc_prim(0,3,1)+deriving instance Typeable SPEC+# endif++# if MIN_VERSION_base(4,7,0)+deriving instance Typeable FieldFormat+deriving instance Typeable FormatAdjustment+deriving instance Typeable FormatParse+deriving instance Typeable FormatSign+deriving instance Typeable KProxy+deriving instance Typeable Number+deriving instance Typeable SomeNat+deriving instance Typeable SomeSymbol+deriving instance Typeable QSem -- This instance seems to have been removed+ -- (accidentally?) in base-4.7.0.0+# endif++# if __GLASGOW_HASKELL__ >= 708+-- Data types which have more than seven type arguments+deriving instance Typeable (,,,,,,,)+deriving instance Typeable (,,,,,,,,)+deriving instance Typeable (,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)++-- Data types which require PolyKinds+deriving instance Typeable (:+:)+deriving instance Typeable (:*:)+deriving instance Typeable (:.:)+deriving instance Typeable Exts.Any+deriving instance Typeable ArrowMonad+deriving instance Typeable Kleisli+deriving instance Typeable M1+deriving instance Typeable Rec1+deriving instance Typeable WrappedArrow+deriving instance Typeable WrappedMonad++-- Typeclasses+deriving instance Typeable Arrow+deriving instance Typeable ArrowApply+deriving instance Typeable ArrowChoice+deriving instance Typeable ArrowLoop+deriving instance Typeable ArrowZero+deriving instance Typeable Bits+deriving instance Typeable Bounded+deriving instance Typeable BufferedIO+deriving instance Typeable Category+deriving instance Typeable Coercible+deriving instance Typeable Constructor+deriving instance Typeable Data+deriving instance Typeable Datatype+deriving instance Typeable Enum+deriving instance Typeable Exception+deriving instance Typeable Eq+deriving instance Typeable FiniteBits+deriving instance Typeable Floating+deriving instance Typeable F.Foldable+deriving instance Typeable Fractional+deriving instance Typeable Functor+deriving instance Typeable Generic+deriving instance Typeable Generic1+deriving instance Typeable GHCiSandboxIO+deriving instance Typeable HasResolution+deriving instance Typeable HPrintfType+deriving instance Typeable Integral+deriving instance Typeable IODevice+deriving instance Typeable IP+deriving instance Typeable IsChar+deriving instance Typeable IsList+deriving instance Typeable IsString+deriving instance Typeable Ix+deriving instance Typeable KnownNat+deriving instance Typeable KnownSymbol+deriving instance Typeable Monad+deriving instance Typeable MonadFix+deriving instance Typeable MonadPlus+deriving instance Typeable MonadZip+deriving instance Typeable Num+deriving instance Typeable Ord+deriving instance Typeable PrintfArg+deriving instance Typeable PrintfType+deriving instance Typeable RawIO+deriving instance Typeable Read+deriving instance Typeable Real+deriving instance Typeable RealFloat+deriving instance Typeable RealFrac+deriving instance Typeable Selector+deriving instance Typeable Show+deriving instance Typeable Storable+deriving instance Typeable TestCoercion+deriving instance Typeable TestEquality+deriving instance Typeable T.Traversable+deriving instance Typeable Typeable++-- Constraints+deriving instance Typeable (~)+deriving instance Typeable Constraint++-- Promoted data constructors+deriving instance Typeable '()+deriving instance Typeable '(,)+deriving instance Typeable '(,,)+deriving instance Typeable '(,,,)+deriving instance Typeable '(,,,,)+deriving instance Typeable '(,,,,,)+deriving instance Typeable '(,,,,,,)+deriving instance Typeable '(,,,,,,,)+deriving instance Typeable '(,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)+deriving instance Typeable '[]+deriving instance Typeable '(:)+deriving instance Typeable '(:%)+deriving instance Typeable '(:+)+deriving instance Typeable 'AbsoluteSeek+deriving instance Typeable 'All+deriving instance Typeable 'AlreadyExists+deriving instance Typeable 'Any+deriving instance Typeable 'AppendHandle+deriving instance Typeable 'AppendMode+deriving instance Typeable 'BlockedIndefinitelyOnMVar+deriving instance Typeable 'BlockedIndefinitelyOnSTM+deriving instance Typeable 'BlockedOnBlackHole+deriving instance Typeable 'BlockedOnException+deriving instance Typeable 'BlockedOnForeignCall+deriving instance Typeable 'BlockedOnMVar+deriving instance Typeable 'BlockedOnOther+deriving instance Typeable 'BlockedOnSTM+deriving instance Typeable 'ClosedHandle+deriving instance Typeable 'ClosePunctuation+deriving instance Typeable 'ConnectorPunctuation+deriving instance Typeable 'Const+deriving instance Typeable 'Control+deriving instance Typeable 'CRLF+deriving instance Typeable 'CurrencySymbol+deriving instance Typeable 'DashPunctuation+deriving instance Typeable 'Deadlock+deriving instance Typeable 'DecimalNumber+deriving instance Typeable 'Denormal+deriving instance Typeable 'Directory+deriving instance Typeable 'DivideByZero+deriving instance Typeable 'Down+deriving instance Typeable 'Dual+deriving instance Typeable 'EnclosingMark+deriving instance Typeable 'Endo+deriving instance Typeable 'Exception.EOF+deriving instance Typeable 'EQ+deriving instance Typeable 'ErrorOnCodingFailure+deriving instance Typeable 'False+deriving instance Typeable 'FinalQuote+deriving instance Typeable 'First+deriving instance Typeable 'ForceSpecConstr+deriving instance Typeable 'Format+deriving instance Typeable 'GT+deriving instance Typeable 'HardwareFault+deriving instance Typeable 'HeapOverflow+deriving instance Typeable 'IgnoreCodingFailure+deriving instance Typeable 'IllegalOperation+deriving instance Typeable 'InappropriateType+deriving instance Typeable 'Data.Infix+deriving instance Typeable 'InitialQuote+deriving instance Typeable 'InputUnderflow+deriving instance Typeable 'Interrupted+deriving instance Typeable 'InvalidArgument+deriving instance Typeable 'InvalidSequence+deriving instance Typeable 'Just+deriving instance Typeable 'K1+deriving instance Typeable 'KProxy+deriving instance Typeable 'Last+deriving instance Typeable 'Left+deriving instance Typeable 'LeftAdjust+deriving instance Typeable 'LeftAssociative+deriving instance Typeable 'LetterNumber+deriving instance Typeable 'LF+deriving instance Typeable 'LineSeparator+deriving instance Typeable 'LossOfPrecision+deriving instance Typeable 'LowercaseLetter+deriving instance Typeable 'LT+deriving instance Typeable 'MaskedInterruptible+deriving instance Typeable 'MaskedUninterruptible+deriving instance Typeable 'MathSymbol+deriving instance Typeable 'ModifierLetter+deriving instance Typeable 'ModifierSymbol+deriving instance Typeable 'NestedAtomically+deriving instance Typeable 'NewlineMode+deriving instance Typeable 'NonSpacingMark+deriving instance Typeable 'NonTermination+deriving instance Typeable 'NoSpecConstr+deriving instance Typeable 'NoSuchThing+deriving instance Typeable 'NotAssigned+deriving instance Typeable 'NotAssociative+deriving instance Typeable 'Nothing+deriving instance Typeable 'O+deriving instance Typeable 'OpenPunctuation+deriving instance Typeable 'OtherError+deriving instance Typeable 'OtherLetter+deriving instance Typeable 'OtherNumber+deriving instance Typeable 'OtherPunctuation+deriving instance Typeable 'OtherSymbol+deriving instance Typeable 'OutputUnderflow+deriving instance Typeable 'Overflow+deriving instance Typeable 'Par1+deriving instance Typeable 'ParagraphSeparator+deriving instance Typeable 'PermissionDenied+deriving instance Typeable 'Data.Prefix+deriving instance Typeable 'PrivateUse+deriving instance Typeable 'Product+deriving instance Typeable 'ProtocolError+deriving instance Typeable 'RatioZeroDenominator+deriving instance Typeable 'RawDevice+deriving instance Typeable 'ReadBuffer+deriving instance Typeable 'ReadHandle+deriving instance Typeable 'ReadMode+deriving instance Typeable 'ReadWriteHandle+deriving instance Typeable 'ReadWriteMode+deriving instance Typeable 'RegularFile+deriving instance Typeable 'RelativeSeek+deriving instance Typeable 'ResourceBusy+deriving instance Typeable 'ResourceExhausted+deriving instance Typeable 'ResourceVanished+deriving instance Typeable 'Right+deriving instance Typeable 'RightAssociative+deriving instance Typeable 'RoundtripFailure+deriving instance Typeable 'SeekFromEnd+deriving instance Typeable 'SemiClosedHandle+deriving instance Typeable 'SignPlus+deriving instance Typeable 'SignSpace+deriving instance Typeable 'Space+deriving instance Typeable 'SpacingCombiningMark+deriving instance Typeable 'SPEC+deriving instance Typeable 'SPEC2+deriving instance Typeable 'StackOverflow+deriving instance Typeable 'Stream+deriving instance Typeable 'Sum+deriving instance Typeable 'Surrogate+deriving instance Typeable 'SystemError+deriving instance Typeable 'ThreadBlocked+deriving instance Typeable 'ThreadDied+deriving instance Typeable 'ThreadFinished+deriving instance Typeable 'ThreadKilled+deriving instance Typeable 'ThreadRunning+deriving instance Typeable 'TimeExpired+deriving instance Typeable 'TitlecaseLetter+deriving instance Typeable 'TransliterateCodingFailure+deriving instance Typeable 'True+deriving instance Typeable 'U1+deriving instance Typeable 'Underflow+deriving instance Typeable 'Unmasked+deriving instance Typeable 'UnsatisfiedConstraints+deriving instance Typeable 'UnsupportedOperation+deriving instance Typeable 'UppercaseLetter+deriving instance Typeable 'UserError+deriving instance Typeable 'UserInterrupt+deriving instance Typeable 'WriteBuffer+deriving instance Typeable 'WriteHandle+deriving instance Typeable 'WriteMode+deriving instance Typeable 'ZeroPad+deriving instance Typeable 'ZipList++# if defined(mingw32_HOST_OS)+deriving instance Typeable 'Break+deriving instance Typeable 'Close+deriving instance Typeable 'ControlC+deriving instance Typeable 'Logoff+deriving instance Typeable 'Shutdown+# endif+# endif++#endif
src/Data/Orphans/Prelude.hs view
@@ -1,94 +1,96 @@-{-# LANGUAGE CPP #-} -{-# OPTIONS_GHC -fno-warn-deprecations #-} - -{-| -Exports modules that Data.Orphans needs. Because Data.Orphans uses several modules -that only need to be in scope for certain versions of GHC, exporting all of the modules -separately eliminates the need to use CPP pragmas for GHC-version-specific imports. -This makes it much easier to be -Wall-compliant. - -Note that this module does not export any modules that could introduce name clashes. --} -module Data.Orphans.Prelude (module OrphansPrelude) where - -import Control.Applicative as OrphansPrelude -import Control.Arrow as OrphansPrelude hiding (loop) -import Control.Category as OrphansPrelude hiding ((.), id) -import Control.Concurrent.QSem as OrphansPrelude -import Control.Monad as OrphansPrelude hiding (mapM, sequence) -import Control.Monad.Fix as OrphansPrelude - -import Data.Bits as OrphansPrelude -import Data.Char as OrphansPrelude -import Data.Complex as OrphansPrelude (Complex(..)) -import Data.Fixed as OrphansPrelude -import Data.Int as OrphansPrelude -import Data.Ix as OrphansPrelude -import Data.List as OrphansPrelude (genericLength) -import Data.Version as OrphansPrelude -import Data.Word as OrphansPrelude - -import Foreign.C.Error as OrphansPrelude -import Foreign.C.Types as OrphansPrelude -import Foreign.Marshal.Pool as OrphansPrelude -import Foreign.Ptr as OrphansPrelude (castPtr) -import Foreign.Storable as OrphansPrelude - -import GHC.Base as OrphansPrelude -import GHC.Conc as OrphansPrelude -import GHC.Desugar as OrphansPrelude (AnnotationWrapper) -import GHC.ForeignPtr as OrphansPrelude -import GHC.IO.Buffer as OrphansPrelude -import GHC.IO.BufferedIO as OrphansPrelude (BufferedIO) -import GHC.IO.Device as OrphansPrelude (IODevice, IODeviceType(..), RawIO) -import GHC.IO.Encoding as OrphansPrelude -import GHC.IO.Handle as OrphansPrelude -import GHC.IO.Handle.Types as OrphansPrelude -import GHC.Real as OrphansPrelude (Ratio(..), (%)) -import GHC.ST as OrphansPrelude - -import Numeric as OrphansPrelude (showHex) - -import System.Console.GetOpt as OrphansPrelude -import System.IO as OrphansPrelude -import System.Posix.Internals as OrphansPrelude -import System.Posix.Types as OrphansPrelude - -import Text.Printf as OrphansPrelude - -import Unsafe.Coerce as OrphansPrelude (unsafeCoerce) - -#if defined(mingw32_HOST_OS) -import GHC.IO.Encoding.CodePage.Table as OrphansPrelude -#endif - -#if MIN_VERSION_base(4,4,0) -import Control.Monad.Zip as OrphansPrelude -import Data.Typeable.Internal as OrphansPrelude -import GHC.Fingerprint as OrphansPrelude -import GHC.IO.Encoding.Failure as OrphansPrelude - -# if !defined(mingw32_HOST_OS) && !defined(__GHCJS__) -import GHC.Event as OrphansPrelude -# endif -#endif - -#if MIN_VERSION_base(4,5,0) -import GHC.Stack as OrphansPrelude -import GHC.Stats as OrphansPrelude -#endif - -#if MIN_VERSION_base(4,6,0) -import GHC.GHCi as OrphansPrelude -import GHC.IP as OrphansPrelude -import GHC.TypeLits as OrphansPrelude -#endif - -#if MIN_VERSION_base(4,7,0) -import Data.Proxy as OrphansPrelude -import Data.Type.Coercion as OrphansPrelude (Coercion, TestCoercion) -import Data.Type.Equality as OrphansPrelude ((:~:), TestEquality) -import Text.Read.Lex as OrphansPrelude (Number) -#else -import Control.Concurrent.SampleVar as OrphansPrelude -#endif +{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -fno-warn-deprecations #-}++{-|+Exports modules that Data.Orphans needs. Because Data.Orphans uses several modules+that only need to be in scope for certain versions of GHC, exporting all of the modules+separately eliminates the need to use CPP pragmas for GHC-version-specific imports.+This makes it much easier to be -Wall-compliant.++Note that this module does not export any modules that could introduce name clashes.+-}+module Data.Orphans.Prelude (module OrphansPrelude) where++import Control.Applicative as OrphansPrelude+import Control.Arrow as OrphansPrelude hiding (loop)+import Control.Category as OrphansPrelude hiding ((.), id)+import Control.Concurrent.QSem as OrphansPrelude+import Control.Monad as OrphansPrelude hiding (mapM, sequence)+import Control.Monad.Fix as OrphansPrelude++import Data.Bits as OrphansPrelude+import Data.Char as OrphansPrelude+import Data.Complex as OrphansPrelude (Complex(..))+import Data.Fixed as OrphansPrelude+import Data.Int as OrphansPrelude+import Data.Ix as OrphansPrelude+import Data.List as OrphansPrelude (genericLength)+import Data.Version as OrphansPrelude+import Data.Word as OrphansPrelude++import Foreign.C.Error as OrphansPrelude+import Foreign.C.Types as OrphansPrelude+import Foreign.Marshal.Pool as OrphansPrelude+import Foreign.Ptr as OrphansPrelude (castPtr)+import Foreign.Storable as OrphansPrelude++import GHC.Base as OrphansPrelude+import GHC.Conc as OrphansPrelude+import GHC.Desugar as OrphansPrelude (AnnotationWrapper)+import GHC.ForeignPtr as OrphansPrelude+import GHC.IO.Buffer as OrphansPrelude+import GHC.IO.BufferedIO as OrphansPrelude (BufferedIO)+import GHC.IO.Device as OrphansPrelude (IODevice, IODeviceType(..), RawIO)+import GHC.IO.Encoding as OrphansPrelude+import GHC.IO.Handle as OrphansPrelude+import GHC.IO.Handle.Types as OrphansPrelude+import GHC.Real as OrphansPrelude (Ratio(..), (%))+import GHC.ST as OrphansPrelude++import Numeric as OrphansPrelude (showHex)++import System.Console.GetOpt as OrphansPrelude+import System.IO as OrphansPrelude+import System.Posix.Internals as OrphansPrelude+import System.Posix.Types as OrphansPrelude++import Text.Printf as OrphansPrelude++import Unsafe.Coerce as OrphansPrelude (unsafeCoerce)++#if defined(mingw32_HOST_OS)+import GHC.IO.Encoding.CodePage.Table as OrphansPrelude+#endif++#if MIN_VERSION_base(4,4,0)+import Control.Monad.Zip as OrphansPrelude+import Data.Typeable.Internal as OrphansPrelude+import GHC.Fingerprint as OrphansPrelude+import GHC.IO.Encoding.Failure as OrphansPrelude++# if !defined(mingw32_HOST_OS) && !defined(__GHCJS__)+import GHC.Event as OrphansPrelude+# endif+#endif++#if MIN_VERSION_base(4,5,0)+import GHC.Stack as OrphansPrelude+import GHC.Stats as OrphansPrelude+#endif++#if MIN_VERSION_base(4,6,0)+import GHC.GHCi as OrphansPrelude+#if !(MIN_VERSION_base(4,8,2))+import GHC.IP as OrphansPrelude+#endif+import GHC.TypeLits as OrphansPrelude+#endif++#if MIN_VERSION_base(4,7,0)+import Data.Proxy as OrphansPrelude+import Data.Type.Coercion as OrphansPrelude (Coercion, TestCoercion)+import Data.Type.Equality as OrphansPrelude ((:~:), TestEquality)+import Text.Read.Lex as OrphansPrelude (Number)+#else+import Control.Concurrent.SampleVar as OrphansPrelude+#endif
test/Control/Applicative/OrphansSpec.hs view
@@ -1,40 +1,40 @@-module Control.Applicative.OrphansSpec (main, spec) where - -import Test.Hspec -import Control.Applicative -import Data.Orphans () -import Data.Monoid -import Prelude - --- simplest one to use -newtype Identity a = Identity { runIdentity :: a } - -instance Functor Identity where - fmap f = Identity . f . runIdentity - -instance Applicative Identity where - pure = Identity - Identity f <*> x = f <$> x - -instance Monad Identity where - return = Identity - m >>= k = k (runIdentity m) - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "Monoid (Const a b)" $ do - it "mempty returns an empty const" $ - getConst (mempty :: (Const String Int)) `shouldBe` "" - it "mappends const part" $ - getConst ((Const "aaa" :: Const String Int) `mappend` (Const "bbb" :: Const String Int)) - `shouldBe` "aaabbb" - - describe "Monad (WrappedMonad m)" $ - it "allows to use a Monad interface in a WrappedMonad" $ - (runIdentity . unwrapMonad - $ (WrapMonad (return 1 :: Identity Int)) - >> (WrapMonad (return 2 :: Identity Int))) - `shouldBe` (2::Int) +module Control.Applicative.OrphansSpec (main, spec) where++import Test.Hspec+import Control.Applicative+import Data.Orphans ()+import Data.Monoid+import Prelude++-- simplest one to use+newtype Identity a = Identity { runIdentity :: a }++instance Functor Identity where+ fmap f = Identity . f . runIdentity++instance Applicative Identity where+ pure = Identity+ Identity f <*> x = f <$> x++instance Monad Identity where+ return = Identity+ m >>= k = k (runIdentity m)++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "Monoid (Const a b)" $ do+ it "mempty returns an empty const" $+ getConst (mempty :: (Const String Int)) `shouldBe` ""+ it "mappends const part" $+ getConst ((Const "aaa" :: Const String Int) `mappend` (Const "bbb" :: Const String Int))+ `shouldBe` "aaabbb"++ describe "Monad (WrappedMonad m)" $+ it "allows to use a Monad interface in a WrappedMonad" $+ (runIdentity . unwrapMonad+ $ (WrapMonad (return 1 :: Identity Int))+ >> (WrapMonad (return 2 :: Identity Int)))+ `shouldBe` (2::Int)
test/Control/Exception/OrphansSpec.hs view
@@ -1,17 +1,17 @@-module Control.Exception.OrphansSpec (main, spec) where - -import Test.Hspec -import Control.Exception -import Data.Orphans () - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "ErrorCall" $ do - it "has an Eq instance" $ do - ErrorCall "foo" `shouldBe` ErrorCall "foo" - - it "has an Ord instance" $ do - ErrorCall "foo" `shouldSatisfy` (> ErrorCall "bar") +module Control.Exception.OrphansSpec (main, spec) where++import Test.Hspec+import Control.Exception+import Data.Orphans ()++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "ErrorCall" $ do+ it "has an Eq instance" $ do+ ErrorCall "foo" `shouldBe` ErrorCall "foo"++ it "has an Ord instance" $ do+ ErrorCall "foo" `shouldSatisfy` (> ErrorCall "bar")
test/Data/Bits/OrphansSpec.hs view
@@ -1,25 +1,25 @@-{-# LANGUAGE CPP #-} -module Data.Bits.OrphansSpec (main, spec) where - -import Test.Hspec - -#if MIN_VERSION_base(4,6,0) -import Data.Bits -import Data.Orphans () -#endif - -main :: IO () -main = hspec spec - -spec :: Spec -spec = -#if MIN_VERSION_base(4,6,0) - describe "Bits Bool instance" $ - it "allows bitwise operations on Bools" $ do - True .&. True `shouldBe` True - True .&. False `shouldBe` False - False .&. True `shouldBe` False - False .&. False `shouldBe` False -#else - return () -#endif +{-# LANGUAGE CPP #-}+module Data.Bits.OrphansSpec (main, spec) where++import Test.Hspec++#if MIN_VERSION_base(4,6,0)+import Data.Bits+import Data.Orphans ()+#endif++main :: IO ()+main = hspec spec++spec :: Spec+spec =+#if MIN_VERSION_base(4,6,0)+ describe "Bits Bool instance" $+ it "allows bitwise operations on Bools" $ do+ True .&. True `shouldBe` True+ True .&. False `shouldBe` False+ False .&. True `shouldBe` False+ False .&. False `shouldBe` False+#else+ return ()+#endif
test/Data/Foldable/OrphansSpec.hs view
@@ -1,38 +1,38 @@-module Data.Foldable.OrphansSpec (main, spec) where - -import Test.Hspec - -import Control.Applicative -import Data.Foldable as F -import Data.Monoid -import Data.Orphans () -import Prelude - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "Either Foldable Instance" $ do - it "foldMap returns mempty for a Left value" $ - foldMap (`mappend` "+") (Left "abc" :: Either String String) `shouldBe` mempty - it "foldMap returns the result of the function on the Right value" $ - foldMap (`mappend` "+") (Right "abc" :: Either String String) `shouldBe` "abc+" - - it "foldr returns the accumulator for a Left value" $ - F.foldr mappend "+" (Left "abc" :: Either String String) `shouldBe` "+" - it "foldr returns the result of the function on the Right value and accumulator" $ - F.foldr mappend "+" (Right "abc" :: Either String String) `shouldBe` "abc+" - - describe "(,) Foldable Instance" $ do - it "foldMap returns the result of the function applied to the second element" $ - foldMap (`mappend` "+") ("xyz","abc") `shouldBe` "abc+" - - it "foldr returns the result of the function on the second element of the tuple and accumulator" $ - F.foldr mappend "+" ("xyz","abc") `shouldBe` "abc+" - - describe "Const m Foldable Instance" $ do - it "foldMap always returns mempty" $ - foldMap (`mappend` "+") (Const "abc") `shouldBe` "" - it "foldr applies the function to the accumulator and mempty" $ do - F.foldr mappend "+" (Const "abc") `shouldBe` "+" +module Data.Foldable.OrphansSpec (main, spec) where++import Test.Hspec++import Control.Applicative+import Data.Foldable as F+import Data.Monoid+import Data.Orphans ()+import Prelude++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "Either Foldable Instance" $ do+ it "foldMap returns mempty for a Left value" $+ foldMap (`mappend` "+") (Left "abc" :: Either String String) `shouldBe` mempty+ it "foldMap returns the result of the function on the Right value" $+ foldMap (`mappend` "+") (Right "abc" :: Either String String) `shouldBe` "abc+"++ it "foldr returns the accumulator for a Left value" $+ F.foldr mappend "+" (Left "abc" :: Either String String) `shouldBe` "+"+ it "foldr returns the result of the function on the Right value and accumulator" $+ F.foldr mappend "+" (Right "abc" :: Either String String) `shouldBe` "abc+"++ describe "(,) Foldable Instance" $ do+ it "foldMap returns the result of the function applied to the second element" $+ foldMap (`mappend` "+") ("xyz","abc") `shouldBe` "abc+"++ it "foldr returns the result of the function on the second element of the tuple and accumulator" $+ F.foldr mappend "+" ("xyz","abc") `shouldBe` "abc+"++ describe "Const m Foldable Instance" $ do+ it "foldMap always returns mempty" $+ foldMap (`mappend` "+") (Const "abc") `shouldBe` ""+ it "foldr applies the function to the accumulator and mempty" $ do+ F.foldr mappend "+" (Const "abc") `shouldBe` "+"
test/Data/Monoid/OrphansSpec.hs view
@@ -1,17 +1,17 @@-module Data.Monoid.OrphansSpec (main, spec) where - -import Test.Hspec -import Data.Monoid -import Data.Orphans () - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "Num (Sum a) instance" $ - it "allows a Sum value to be created from a number" $ - 1 `shouldBe` Sum (1 :: Int) - describe "Num (Product a) instance" $ - it "allows a Product value to be created from a number" $ - 1 `shouldBe` Product (1 :: Int) +module Data.Monoid.OrphansSpec (main, spec) where++import Test.Hspec+import Data.Monoid+import Data.Orphans ()++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "Num (Sum a) instance" $+ it "allows a Sum value to be created from a number" $+ 1 `shouldBe` Sum (1 :: Int)+ describe "Num (Product a) instance" $+ it "allows a Product value to be created from a number" $+ 1 `shouldBe` Product (1 :: Int)
test/Data/Traversable/OrphansSpec.hs view
@@ -1,27 +1,27 @@-module Data.Traversable.OrphansSpec (main, spec) where - -import Test.Hspec - -import Control.Applicative -import Data.Orphans () -import Data.Traversable -import Prelude - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "Either Traversable Instance" $ do - it "traverses a Left value" $ - traverse (:[]) (Left 5 :: Either Int String) `shouldBe` [Left 5] - it "traverses a Right Value" $ - traverse (:[]) (Right "aaa" :: Either Int String) `shouldBe` [Right "aaa"] - - describe "(,) a Traversable Instance" $ do - it "traverses a (,) a value" $ - traverse (:[]) (5::Int,"aaa") `shouldBe` [(5,"aaa")] - - describe "Const m Traversable Instance" $ do - it "traverses a Const a value" $ do - fmap getConst (traverse (:[]) (Const 5 :: Const Int String)) `shouldBe` [5] +module Data.Traversable.OrphansSpec (main, spec) where++import Test.Hspec++import Control.Applicative+import Data.Orphans ()+import Data.Traversable+import Prelude++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "Either Traversable Instance" $ do+ it "traverses a Left value" $+ traverse (:[]) (Left 5 :: Either Int String) `shouldBe` [Left 5]+ it "traverses a Right Value" $+ traverse (:[]) (Right "aaa" :: Either Int String) `shouldBe` [Right "aaa"]++ describe "(,) a Traversable Instance" $ do+ it "traverses a (,) a value" $+ traverse (:[]) (5::Int,"aaa") `shouldBe` [(5,"aaa")]++ describe "Const m Traversable Instance" $ do+ it "traverses a Const a value" $ do+ fmap getConst (traverse (:[]) (Const 5 :: Const Int String)) `shouldBe` [5]
test/Data/Version/OrphansSpec.hs view
@@ -1,26 +1,26 @@-{-# LANGUAGE CPP #-} -#if MIN_VERSION_base(4,7,0) -{-# LANGUAGE OverloadedLists #-} -#endif -module Data.Version.OrphansSpec (main, spec) where - -import Test.Hspec - -import Data.Data -import Data.Orphans () -import Data.Version - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "Data Version instance" $ - it "allows obtaining a Version constructor" $ - dataTypeName (dataTypeOf (Version [1,2,3] [])) `shouldBe` "Data.Version.Version" - -#if MIN_VERSION_base(4,7,0) - describe "IsList Version instance" $ - it "creates a Version from an Int list" $ - [1,2,3] `shouldBe` Version [1,2,3] [] -#endif +{-# LANGUAGE CPP #-}+#if MIN_VERSION_base(4,7,0)+{-# LANGUAGE OverloadedLists #-}+#endif+module Data.Version.OrphansSpec (main, spec) where++import Test.Hspec++import Data.Data+import Data.Orphans ()+import Data.Version++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "Data Version instance" $+ it "allows obtaining a Version constructor" $+ dataTypeName (dataTypeOf (Version [1,2,3] [])) `shouldBe` "Data.Version.Version"++#if MIN_VERSION_base(4,7,0)+ describe "IsList Version instance" $+ it "creates a Version from an Int list" $+ [1,2,3] `shouldBe` Version [1,2,3] []+#endif
test/Foreign/Storable/OrphansSpec.hs view
@@ -1,24 +1,24 @@-module Foreign.Storable.OrphansSpec (main, spec) where - -import Test.Hspec -import Data.Complex -import Data.Orphans () -import Data.Ratio -import Foreign.Storable - -main :: IO () -main = hspec spec - -spec :: Spec -spec = do - describe "Storable Complex instance" $ do - it "has twice the sizeOf its realPart" $ do - sizeOf ((1 :: Double) :+ 2) `shouldBe` 2*sizeOf (1 :: Double) - it "has the alignment of its realPart" $ do - alignment ((1 :: Double) :+ 2) `shouldBe` alignment (1 :: Double) - - describe "Storable Ratio instance" $ do - it "has twice the sizeOf its parameterized type" $ do - sizeOf ((1 :: Int) % 2) `shouldBe` 2*sizeOf (1 :: Int) - it "has the alignment of its parameterized type" $ do - alignment ((1 :: Int) % 2) `shouldBe` alignment (1 :: Int) +module Foreign.Storable.OrphansSpec (main, spec) where++import Test.Hspec+import Data.Complex+import Data.Orphans ()+import Data.Ratio+import Foreign.Storable++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+ describe "Storable Complex instance" $ do+ it "has twice the sizeOf its realPart" $ do+ sizeOf ((1 :: Double) :+ 2) `shouldBe` 2*sizeOf (1 :: Double)+ it "has the alignment of its realPart" $ do+ alignment ((1 :: Double) :+ 2) `shouldBe` alignment (1 :: Double)++ describe "Storable Ratio instance" $ do+ it "has twice the sizeOf its parameterized type" $ do+ sizeOf ((1 :: Int) % 2) `shouldBe` 2*sizeOf (1 :: Int)+ it "has the alignment of its parameterized type" $ do+ alignment ((1 :: Int) % 2) `shouldBe` alignment (1 :: Int)
test/GHC/Fingerprint/OrphansSpec.hs view
@@ -1,29 +1,29 @@-{-# LANGUAGE CPP #-} -module GHC.Fingerprint.OrphansSpec (main, spec) where - -import Test.Hspec - -#if MIN_VERSION_base(4,4,0) -import Data.Orphans () -import Data.Word (Word64) -import GHC.Fingerprint.Type -#endif - -main :: IO () -main = hspec spec - -spec :: Spec -spec = -#if MIN_VERSION_base(4,4,0) - describe "Fingerprint" $ - it "has a Show instance" $ do - let w1, w2 :: Word64 - w1 = 0x0123456789abcdef - w2 = 0x42 - - f :: Fingerprint - f = Fingerprint w1 w2 - show f `shouldBe` "0123456789abcdef0000000000000042" -#else - return () -#endif +{-# LANGUAGE CPP #-}+module GHC.Fingerprint.OrphansSpec (main, spec) where++import Test.Hspec++#if MIN_VERSION_base(4,4,0)+import Data.Orphans ()+import Data.Word (Word64)+import GHC.Fingerprint.Type+#endif++main :: IO ()+main = hspec spec++spec :: Spec+spec =+#if MIN_VERSION_base(4,4,0)+ describe "Fingerprint" $+ it "has a Show instance" $ do+ let w1, w2 :: Word64+ w1 = 0x0123456789abcdef+ w2 = 0x42+ + f :: Fingerprint+ f = Fingerprint w1 w2+ show f `shouldBe` "0123456789abcdef0000000000000042"+#else+ return ()+#endif
test/Spec.hs view
@@ -1,1 +1,1 @@-{-# OPTIONS_GHC -F -pgmF hspec-discover #-} +{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
test/System/Posix/Types/OrphansSpec.hs view
@@ -1,149 +1,149 @@-{-# LANGUAGE CPP #-} -{-# OPTIONS_GHC -fno-warn-deprecations #-} -module System.Posix.Types.OrphansSpec (main, spec) where - -#include "HsBaseConfig.h" - -import Test.Hspec - -#if defined(HTYPE_DEV_T) -import Control.Applicative (liftA2) - -import Data.Bits (Bits(..)) -import Data.Orphans () - -import System.Posix.Types.IntWord -import System.Posix.Types - -import Test.Hspec.QuickCheck (prop) -import Test.QuickCheck (NonZero(..)) -#endif - -main :: IO () -main = hspec spec - -#if defined(HTYPE_DEV_T) -type HDev = HTYPE_DEV_T - -spec :: Spec -spec = describe "CDev" $ do - describe "Bits instance" $ do - prop "implements (.&.)" $ - pred2HDevHDev (.&.) (.&.) - prop "implements (.|.)" $ - pred2HDevHDev (.|.) (.|.) - prop "implements xor" $ - pred2HDevHDev xor xor - prop "implements shift" $ - pred2IntHDev shift shift - prop "implements rotate" $ - pred2IntHDev rotate rotate - prop "implements setBit" $ - pred2IntHDev setBit setBit - prop "implements clearBit" $ - pred2IntHDev clearBit clearBit - prop "implements complementBit" $ - pred2IntHDev complementBit complementBit - prop "implements testBit" $ - pred2IntEq testBit testBit - prop "implements complement" $ - pred1HDevHDev complement complement - prop "implements bit" $ - pred1IntHDev bit bit - prop "implements bitSize" $ - pred1HDevEq bitSize bitSize - prop "implements isSigned" $ - pred1HDevEq isSigned isSigned - describe "Bounded instance" $ do - it "implements minBound" $ - toInteger (minBound :: CDev) `shouldBe` toInteger (minBound :: HDev) - it "implements maxBound" $ - toInteger (maxBound :: CDev) `shouldBe` toInteger (maxBound :: HDev) - describe "Integral instance" $ do - prop "implements quot" $ - pred2HDevHDev quot quot - prop "implements rem" $ - pred2HDevHDev rem rem - prop "implements div" $ - pred2HDevHDev div div - prop "implements mod" $ - pred2HDevHDev mod mod - prop "implements quotRem" $ - pred2HDevPair quotRem quotRem - prop "implements divMod" $ - pred2HDevPair divMod divMod - prop "implements toInteger" $ - pred1HDevEq toInteger toInteger - -eqCDevHDev :: CDev -> HDev -> Bool -eqCDevHDev cDev hDev = toInteger cDev == toInteger hDev - -pred1Common :: (b -> c -> d) - -> (a -> b) - -> (a -> c) - -> a -> d -pred1Common = liftA2 - -pred1HDev :: (b -> c -> Bool) - -> (CDev -> b) - -> (HDev -> c) - -> HDev -> Bool -pred1HDev p f = pred1Common p (f . fromIntegral) - -pred1HDevEq :: Eq a => (CDev -> a) -> (HDev -> a) -> HDev -> Bool -pred1HDevEq = pred1HDev (==) - -pred1HDevHDev :: (CDev -> CDev) -> (HDev -> HDev) -> HDev -> Bool -pred1HDevHDev = pred1HDev eqCDevHDev - -pred1IntHDev :: (Int -> CDev) -> (Int -> HDev) -> Int -> Bool -pred1IntHDev = pred1Common eqCDevHDev - -pred2Common :: (c -> d -> e) - -> (a -> b -> c) - -> (a -> b -> d) - -> a -> b -> e -pred2Common p f g x y = p (f x y) (g x y) - -pred2HDev :: (a -> b -> Bool) - -> (CDev -> CDev -> a) - -> (HDev -> HDev -> b) - -> NonZero HDev -> NonZero HDev -> Bool -pred2HDev eqv cDevPred hDevPred = - pred2Common eqv (\nz1 nz2 -> cDevPred (fromIntegral $ getNonZero nz1) - (fromIntegral $ getNonZero nz2)) - (\nz1 nz2 -> hDevPred (getNonZero nz1) - (getNonZero nz2)) - -pred2HDevHDev :: (CDev -> CDev -> CDev) - -> (HDev -> HDev -> HDev) - -> NonZero HDev -> NonZero HDev -> Bool -pred2HDevHDev = pred2HDev eqCDevHDev - -pred2HDevPair :: (CDev -> CDev -> (CDev, CDev)) - -> (HDev -> HDev -> (HDev, HDev)) - -> NonZero HDev -> NonZero HDev -> Bool -pred2HDevPair = pred2HDev $ \(cDev1, cDev2) (hDev1, hDev2) -> - toInteger cDev1 == toInteger hDev1 - && toInteger cDev2 == toInteger hDev2 - -pred2Int :: (a -> b -> Bool) - -> (CDev -> Int -> a) - -> (HDev -> Int -> b) - -> HDev -> Int -> Bool -pred2Int eqv cDevPred = pred2Common eqv (cDevPred . fromIntegral) - -pred2IntHDev :: (CDev -> Int -> CDev) - -> (HDev -> Int -> HDev) - -> HDev -> Int -> Bool -pred2IntHDev = pred2Int eqCDevHDev - -pred2IntEq :: Eq a - => (CDev -> Int -> a) - -> (HDev -> Int -> a) - -> HDev -> Int -> Bool -pred2IntEq = pred2Int (==) -#else -spec :: Spec -spec = return () +{-# LANGUAGE CPP #-}+{-# OPTIONS_GHC -fno-warn-deprecations #-}+module System.Posix.Types.OrphansSpec (main, spec) where++#include "HsBaseConfig.h"++import Test.Hspec++#if defined(HTYPE_DEV_T)+import Control.Applicative (liftA2)++import Data.Bits (Bits(..))+import Data.Orphans ()++import System.Posix.Types.IntWord+import System.Posix.Types++import Test.Hspec.QuickCheck (prop)+import Test.QuickCheck (NonZero(..))+#endif++main :: IO ()+main = hspec spec++#if defined(HTYPE_DEV_T)+type HDev = HTYPE_DEV_T++spec :: Spec+spec = describe "CDev" $ do+ describe "Bits instance" $ do+ prop "implements (.&.)" $+ pred2HDevHDev (.&.) (.&.)+ prop "implements (.|.)" $+ pred2HDevHDev (.|.) (.|.)+ prop "implements xor" $+ pred2HDevHDev xor xor+ prop "implements shift" $+ pred2IntHDev shift shift+ prop "implements rotate" $+ pred2IntHDev rotate rotate+ prop "implements setBit" $+ pred2IntHDev setBit setBit+ prop "implements clearBit" $+ pred2IntHDev clearBit clearBit+ prop "implements complementBit" $+ pred2IntHDev complementBit complementBit+ prop "implements testBit" $+ pred2IntEq testBit testBit+ prop "implements complement" $+ pred1HDevHDev complement complement+ prop "implements bit" $+ pred1IntHDev bit bit+ prop "implements bitSize" $+ pred1HDevEq bitSize bitSize+ prop "implements isSigned" $+ pred1HDevEq isSigned isSigned+ describe "Bounded instance" $ do+ it "implements minBound" $+ toInteger (minBound :: CDev) `shouldBe` toInteger (minBound :: HDev)+ it "implements maxBound" $+ toInteger (maxBound :: CDev) `shouldBe` toInteger (maxBound :: HDev)+ describe "Integral instance" $ do+ prop "implements quot" $+ pred2HDevHDev quot quot+ prop "implements rem" $+ pred2HDevHDev rem rem+ prop "implements div" $+ pred2HDevHDev div div+ prop "implements mod" $+ pred2HDevHDev mod mod+ prop "implements quotRem" $+ pred2HDevPair quotRem quotRem+ prop "implements divMod" $+ pred2HDevPair divMod divMod+ prop "implements toInteger" $+ pred1HDevEq toInteger toInteger++eqCDevHDev :: CDev -> HDev -> Bool+eqCDevHDev cDev hDev = toInteger cDev == toInteger hDev++pred1Common :: (b -> c -> d)+ -> (a -> b)+ -> (a -> c)+ -> a -> d+pred1Common = liftA2++pred1HDev :: (b -> c -> Bool)+ -> (CDev -> b)+ -> (HDev -> c)+ -> HDev -> Bool+pred1HDev p f = pred1Common p (f . fromIntegral)++pred1HDevEq :: Eq a => (CDev -> a) -> (HDev -> a) -> HDev -> Bool+pred1HDevEq = pred1HDev (==)++pred1HDevHDev :: (CDev -> CDev) -> (HDev -> HDev) -> HDev -> Bool+pred1HDevHDev = pred1HDev eqCDevHDev++pred1IntHDev :: (Int -> CDev) -> (Int -> HDev) -> Int -> Bool+pred1IntHDev = pred1Common eqCDevHDev++pred2Common :: (c -> d -> e)+ -> (a -> b -> c)+ -> (a -> b -> d)+ -> a -> b -> e+pred2Common p f g x y = p (f x y) (g x y)++pred2HDev :: (a -> b -> Bool)+ -> (CDev -> CDev -> a)+ -> (HDev -> HDev -> b)+ -> NonZero HDev -> NonZero HDev -> Bool+pred2HDev eqv cDevPred hDevPred =+ pred2Common eqv (\nz1 nz2 -> cDevPred (fromIntegral $ getNonZero nz1)+ (fromIntegral $ getNonZero nz2))+ (\nz1 nz2 -> hDevPred (getNonZero nz1)+ (getNonZero nz2))++pred2HDevHDev :: (CDev -> CDev -> CDev)+ -> (HDev -> HDev -> HDev)+ -> NonZero HDev -> NonZero HDev -> Bool+pred2HDevHDev = pred2HDev eqCDevHDev++pred2HDevPair :: (CDev -> CDev -> (CDev, CDev))+ -> (HDev -> HDev -> (HDev, HDev))+ -> NonZero HDev -> NonZero HDev -> Bool+pred2HDevPair = pred2HDev $ \(cDev1, cDev2) (hDev1, hDev2) ->+ toInteger cDev1 == toInteger hDev1+ && toInteger cDev2 == toInteger hDev2++pred2Int :: (a -> b -> Bool)+ -> (CDev -> Int -> a)+ -> (HDev -> Int -> b)+ -> HDev -> Int -> Bool+pred2Int eqv cDevPred = pred2Common eqv (cDevPred . fromIntegral)++pred2IntHDev :: (CDev -> Int -> CDev)+ -> (HDev -> Int -> HDev)+ -> HDev -> Int -> Bool+pred2IntHDev = pred2Int eqCDevHDev++pred2IntEq :: Eq a+ => (CDev -> Int -> a)+ -> (HDev -> Int -> a)+ -> HDev -> Int -> Bool+pred2IntEq = pred2Int (==)+#else+spec :: Spec+spec = return () #endif