packages feed

base-orphans 0.4.2 → 0.4.3

raw patch · 19 files changed

+1570/−1548 lines, 19 filesdep ~basesetup-changedPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base

API changes (from Hackage documentation)

Files

CHANGES.markdown view
@@ -1,49 +1,52 @@-## 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.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,69 @@-# `base-orphans` [![Hackage version](https://img.shields.io/hackage/v/base-orphans.svg?style=flat)](http://hackage.haskell.org/package/base-orphans) [![Build Status](https://img.shields.io/travis/haskell-compat/base-orphans.svg?style=flat)](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` [![Hackage version](https://img.shields.io/hackage/v/base-orphans.svg?style=flat)](http://hackage.haskell.org/package/base-orphans) [![Build Status](https://img.shields.io/travis/haskell-compat/base-orphans.svg?style=flat)](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!
Setup.hs view
@@ -1,2 +1,2 @@-import Distribution.Simple-main = defaultMain+import Distribution.Simple
+main = defaultMain
base-orphans.cabal view
@@ -1,68 +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.2-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-  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.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.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
src/Data/Orphans.hs view
@@ -1,955 +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) && !(MIN_VERSION_base(4,7,0))-import Numeric (showHex)-#endif--#if !(MIN_VERSION_base(4,4,0))-import Control.Concurrent.SampleVar-import Control.Monad.ST as Strict-import Data.List-#endif--#if !(MIN_VERSION_base(4,4,0)) || (__GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710)-import Data.Fixed-#endif--#if MIN_VERSION_base(4,4,0) && __GLASGOW_HASKELL__ < 710-import GHC.Fingerprint-import GHC.IO.Encoding.Failure--# if !defined(mingw32_HOST_OS) && !defined(__GHCJS__)-import GHC.Event-# endif-#endif--#if __GLASGOW_HASKELL__ >= 701 && __GLASGOW_HASKELL__ < 710-import GHC.Generics as Generics-#endif--#if MIN_VERSION_base(4,5,0) && __GLASGOW_HASKELL__ < 710-import GHC.Stack-import GHC.Stats-#endif--#if !(MIN_VERSION_base(4,5,0))-import Unsafe.Coerce (unsafeCoerce)-#endif--#if MIN_VERSION_base(4,6,0) && __GLASGOW_HASKELL__ < 710-import GHC.ForeignPtr-import GHC.GHCi-import GHC.TypeLits-import System.Posix.Internals-#endif--#if !(MIN_VERSION_base(4,6,0)) || (__GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710)-import Control.Arrow-#endif--#if !(MIN_VERSION_base(4,6,0))-import Control.Monad (MonadPlus(..), ap)-import System.Posix.Types-#endif--#if MIN_VERSION_base(4,7,0) && __GLASGOW_HASKELL__ < 710-import Control.Concurrent.QSem-import Data.Proxy-import Text.Read.Lex (Number)-#endif--#if !(MIN_VERSION_base(4,7,0))-import Data.Word-#endif--#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710-import Control.Category hiding ((.))-import Control.Monad-import Control.Monad.Fix-import Control.Monad.Zip-import Data.Ix-import Data.Type.Coercion-import Data.Type.Equality-import Data.Typeable.Internal-import GHC.IO.BufferedIO-import GHC.IO.Device (IODevice, RawIO)-import GHC.IO.Handle-import GHC.IO.Handle.Types hiding (BufferList, HandleType)-import GHC.IP-import Text.Printf-#endif--#if !(MIN_VERSION_base(4,8,0))-import Data.Complex (Complex(..))-import Data.Version-import Foreign.Ptr (castPtr)-import GHC.Real (Ratio(..), (%))-#endif--#if __GLASGOW_HASKELL__ < 710-import Control.Applicative-import Control.Exception as Exception-import Control.Monad.ST.Lazy as Lazy-import Data.Bits-import Data.Char-import Data.Data as Data-import Data.Foldable-import Data.Monoid as Monoid-import Data.Traversable-import Foreign.C.Error-import Foreign.C.Types-import Foreign.Marshal.Pool-import Foreign.Storable-import GHC.Base-import GHC.Conc-import GHC.Desugar (AnnotationWrapper)-import GHC.Exts as Exts-import GHC.IO.Buffer-import GHC.IO.Device (IODeviceType(..))-import GHC.IO.Encoding-import GHC.IO.Exception as Exception-import GHC.IO.Handle.Types (BufferList, HandleType)-import GHC.ST-import System.Console.GetOpt-import System.IO-import Text.ParserCombinators.ReadP-import Text.ParserCombinators.ReadPrec as ReadPrec-import Text.Read as Read--# if defined(mingw32_HOST_OS)-import GHC.ConsoleHandler as Console-import GHC.IO.Encoding.CodePage.Table-# endif-#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 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--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 Foldable (Const m)-deriving instance Foldable (Either a)-deriving instance Traversable (Const m)-deriving instance Traversable (Either a)--instance Foldable ((,) a) where-    foldMap f (_, y) = f y--    foldr f z (_, y) = f y z--instance 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 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 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
@@ -0,0 +1,94 @@+{-# 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
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/IntWord.hs view
@@ -0,0 +1,4 @@+module System.Posix.Types.IntWord (module IntWord) where++import Data.Int  as IntWord+import Data.Word as IntWord
test/System/Posix/Types/OrphansSpec.hs view
@@ -1,141 +1,149 @@-{-# LANGUAGE CPP #-}-{-# OPTIONS_GHC -fno-warn-deprecations #-}-module System.Posix.Types.OrphansSpec (main, spec) where--import           Control.Applicative (liftA2)--import           Data.Bits (Bits(..))-import           Data.Orphans ()-import           Data.Word--import           System.Posix.Types--import           Test.Hspec-import           Test.Hspec.QuickCheck (prop)-import           Test.QuickCheck (NonZero(..))--#include "HsBaseConfig.h"--type HDev = HTYPE_DEV_T--main :: IO ()-main = hspec spec--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 (==)+{-# 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