packages feed

base-compat-batteries (empty) → 0.10.0

raw patch · 130 files changed

+1674/−0 lines, 130 filesdep +QuickCheckdep +basedep +base-compatsetup-changed

Dependencies added: QuickCheck, base, base-compat, base-compat-batteries, bifunctors, fail, hspec, nats, semigroups, tagged, transformers, transformers-compat, void

Files

+ CHANGES.markdown view
@@ -0,0 +1,5 @@+## Changes in 0.10.0 [2018.04.05]+ - Sync with `base-4.11`/GHC 8.4+ - This coincides with the `base-compat-0.10` release. Refer to the+   [`base-compat` changelog](https://github.com/haskell-compat/base-compat/blob/master/base-compat/CHANGES.markdown#changes-in-0100-????????)+   for details.
+ LICENSE view
@@ -0,0 +1,19 @@+Copyright (c) 2012-2018 Simon Hengel <sol@typeful.net> and Ryan Scott <ryan.gl.scott@gmail.com>++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
@@ -0,0 +1,34 @@+# `base-compat` with extra batteries+[![Hackage](https://img.shields.io/hackage/v/base-compat-batteries.svg)][Hackage: base-compat-batteries]+[![Hackage Dependencies](https://img.shields.io/hackage-deps/v/base-compat-batteries.svg)](http://packdeps.haskellers.com/reverse/base-compat-batteries)+[![Haskell Programming Language](https://img.shields.io/badge/language-Haskell-blue.svg)][Haskell.org]+[![BSD3 License](http://img.shields.io/badge/license-MIT-brightgreen.svg)][tl;dr Legal: MIT]++[Hackage: base-compat-batteries]:+  http://hackage.haskell.org/package/base-compat-batteries+  "base-compat-batteries package on Hackage"+[Haskell.org]:+  http://www.haskell.org+  "The Haskell Programming Language"+[tl;dr Legal: MIT]:+  https://tldrlegal.com/license/mit-license+  "MIT License"++## Scope++`base-compat-batteries` provides functions available in later versions of+`base` to a wider range of compilers, without requiring you to use CPP+pragmas in your code.++This package provides the same API as the+[`base-compat`](http://hackage.haskell.org/package/base-compat) library, but+depends on compatibility packages (such as `semigroups`) to offer a wider+support window than `base-compat`, which has no dependencies.++Like `base-compat`, `base-compat-batteries` does not add any orphan instances.+There is a separate package+[`base-orphans`](https://github.com/haskell-compat/base-orphans) for that.++See [here](https://github.com/haskell-compat/base-compat/blob/master/base-compat/README.markdown#dependencies)+for a more comprehensive list of differences between `base-compat` and+`base-compat-batteries`.
+ Setup.lhs view
@@ -0,0 +1,3 @@+#!/usr/bin/env runhaskell+> import Distribution.Simple+> main = defaultMain
+ base-compat-batteries.cabal view
@@ -0,0 +1,223 @@+name:             base-compat-batteries+version:          0.10.0+license:          MIT+license-file:     LICENSE+copyright:        (c) 2012-2018 Simon Hengel,+                  (c) 2014-2018 João Cristóvão,+                  (c) 2015-2018 Ryan Scott+author:           Simon Hengel <sol@typeful.net>,+                  João Cristóvão <jmacristovao@gmail.com>,+                  Ryan Scott <ryan.gl.scott@gmail.com>+maintainer:       Simon Hengel <sol@typeful.net>,+                  João Cristóvão <jmacristovao@gmail.com>,+                  Ryan Scott <ryan.gl.scott@gmail.com>+build-type:       Simple+cabal-version:    >= 1.8+category:         Compatibility+synopsis:         base-compat with extra batteries+description:      Provides functions available in later versions of @base@ to+                  a wider range of compilers, without requiring you to use CPP+                  pragmas in your code.+                  .+                  This package provides the same API as the+                  @<http://hackage.haskell.org/package/base-compat base-compat>@+                  library, but depends on compatibility packages+                  (such as @semigroups@) to offer a wider support window than+                  @base-compat@, which has no dependencies. Most of the modules+                  in this library have the same names as in @base-compat@+                  to make it easier to switch between the two. There also exist+                  versions of each module with the suffix @.Repl.Batteries@,+                  which are distinct from anything in @base-compat@, to allow+                  for easier use in GHCi.+                  .+                  See+                  @<https://github.com/haskell-compat/base-compat/blob/master/base-compat/README.markdown#dependencies here>@+                  for a more comprehensive list of differences between+                  @base-compat@ and @base-compat-batteries@.+tested-with:        GHC == 7.0.1,  GHC == 7.0.2,  GHC == 7.0.3,  GHC == 7.0.4+                  , GHC == 7.2.1,  GHC == 7.2.2+                  , GHC == 7.4.1,  GHC == 7.4.2+                  , GHC == 7.6.1,  GHC == 7.6.2,  GHC == 7.6.3+                  , GHC == 7.8.1,  GHC == 7.8.2,  GHC == 7.8.3,  GHC == 7.8.4+                  , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3+                  , GHC == 8.0.1,  GHC == 8.0.2+                  , GHC == 8.2.1,  GHC == 8.2.2+                  , GHC == 8.4.1+extra-source-files: CHANGES.markdown, README.markdown++source-repository head+  type: git+  location: https://github.com/haskell-compat/base-compat+  subdir: base-compat-batteries++library+  ghc-options:+      -Wall+  build-depends:+      base        >= 4.3  && < 5,+      base-compat >= 0.10 && < 0.11+  if !impl(ghc >= 7.8)+    build-depends:+      tagged >= 0.8 && < 0.9+  if !impl(ghc >= 7.10)+    build-depends:+      nats >= 1.1 && < 1.2,+      void >= 0.7 && < 0.8+  if !impl(ghc >= 8.0)+    build-depends:+      fail                >= 4.9  && < 4.10,+      semigroups          >= 0.16 && < 0.19,+      transformers        >= 0.2  && < 0.6,+      transformers-compat >= 0.3  && < 0.7+  if !impl(ghc >= 8.2)+    build-depends:+      bifunctors >= 5.4.1 && < 5.6+  ghc-options:+      -fno-warn-duplicate-exports++  hs-source-dirs:+      src++  exposed-modules:+      Control.Concurrent.Compat+      Control.Concurrent.MVar.Compat+      Control.Monad.Compat+      Control.Monad.Fail.Compat+      Control.Monad.IO.Class.Compat+      Control.Monad.ST.Lazy.Unsafe.Compat+      Control.Monad.ST.Unsafe.Compat+      Data.Bifoldable.Compat+      Data.Bifunctor.Compat+      Data.Bitraversable.Compat+      Data.Bits.Compat+      Data.Bool.Compat+      Data.Complex.Compat+      Data.Either.Compat+      Data.Foldable.Compat+      Data.Function.Compat+      Data.Functor.Compat+      Data.Functor.Compose.Compat+      Data.Functor.Const.Compat+      Data.Functor.Identity.Compat+      Data.Functor.Product.Compat+      Data.Functor.Sum.Compat+      Data.IORef.Compat+      Data.List.Compat+      Data.Monoid.Compat+      Data.Proxy.Compat+      Data.Ratio.Compat+      Data.Semigroup.Compat+      Data.STRef.Compat+      Data.String.Compat+      Data.Type.Coercion.Compat+      Data.Version.Compat+      Data.Void.Compat+      Data.Word.Compat+      Debug.Trace.Compat+      Foreign.Compat+      Foreign.ForeignPtr.Compat+      Foreign.ForeignPtr.Safe.Compat+      Foreign.ForeignPtr.Unsafe.Compat+      Foreign.Marshal.Alloc.Compat+      Foreign.Marshal.Array.Compat+      Foreign.Marshal.Compat+      Foreign.Marshal.Safe.Compat+      Foreign.Marshal.Unsafe.Compat+      Foreign.Marshal.Utils.Compat+      Numeric.Compat+      Numeric.Natural.Compat+      Prelude.Compat+      System.Environment.Compat+      System.Exit.Compat+      System.IO.Unsafe.Compat+      Text.Read.Compat+      Type.Reflection.Compat++      Control.Concurrent.Compat.Repl.Batteries+      Control.Concurrent.MVar.Compat.Repl.Batteries+      Control.Monad.Compat.Repl.Batteries+      Control.Monad.Fail.Compat.Repl.Batteries+      Control.Monad.IO.Class.Compat.Repl.Batteries+      Control.Monad.ST.Lazy.Unsafe.Compat.Repl.Batteries+      Control.Monad.ST.Unsafe.Compat.Repl.Batteries+      Data.Bifoldable.Compat.Repl.Batteries+      Data.Bifunctor.Compat.Repl.Batteries+      Data.Bitraversable.Compat.Repl.Batteries+      Data.Bits.Compat.Repl.Batteries+      Data.Bool.Compat.Repl.Batteries+      Data.Complex.Compat.Repl.Batteries+      Data.Either.Compat.Repl.Batteries+      Data.Foldable.Compat.Repl.Batteries+      Data.Function.Compat.Repl.Batteries+      Data.Functor.Compat.Repl.Batteries+      Data.Functor.Compose.Compat.Repl.Batteries+      Data.Functor.Const.Compat.Repl.Batteries+      Data.Functor.Identity.Compat.Repl.Batteries+      Data.Functor.Product.Compat.Repl.Batteries+      Data.Functor.Sum.Compat.Repl.Batteries+      Data.IORef.Compat.Repl.Batteries+      Data.List.Compat.Repl.Batteries+      Data.Monoid.Compat.Repl.Batteries+      Data.Proxy.Compat.Repl.Batteries+      Data.Ratio.Compat.Repl.Batteries+      Data.Semigroup.Compat.Repl.Batteries+      Data.STRef.Compat.Repl.Batteries+      Data.String.Compat.Repl.Batteries+      Data.Type.Coercion.Compat.Repl.Batteries+      Data.Version.Compat.Repl.Batteries+      Data.Void.Compat.Repl.Batteries+      Data.Word.Compat.Repl.Batteries+      Debug.Trace.Compat.Repl.Batteries+      Foreign.Compat.Repl.Batteries+      Foreign.ForeignPtr.Compat.Repl.Batteries+      Foreign.ForeignPtr.Safe.Compat.Repl.Batteries+      Foreign.ForeignPtr.Unsafe.Compat.Repl.Batteries+      Foreign.Marshal.Alloc.Compat.Repl.Batteries+      Foreign.Marshal.Array.Compat.Repl.Batteries+      Foreign.Marshal.Compat.Repl.Batteries+      Foreign.Marshal.Safe.Compat.Repl.Batteries+      Foreign.Marshal.Unsafe.Compat.Repl.Batteries+      Foreign.Marshal.Utils.Compat.Repl.Batteries+      Numeric.Compat.Repl.Batteries+      Numeric.Natural.Compat.Repl.Batteries+      Prelude.Compat.Repl.Batteries+      System.Environment.Compat.Repl.Batteries+      System.Exit.Compat.Repl.Batteries+      System.IO.Unsafe.Compat.Repl.Batteries+      Text.Read.Compat.Repl.Batteries+      Type.Reflection.Compat.Repl.Batteries+test-suite spec+  type:+      exitcode-stdio-1.0+  ghc-options:+      -Wall+  hs-source-dirs:+      test+  main-is:+      Spec.hs+  other-modules:+      Control.Monad.CompatSpec+      Data.Bits.CompatSpec+      Data.Bool.CompatSpec+      Data.Either.CompatSpec+      Data.Foldable.CompatSpec+      Data.Function.CompatSpec+      Data.Functor.CompatSpec+      Data.IORef.CompatSpec+      Data.List.CompatSpec+      Data.Monoid.CompatSpec+      Data.STRef.CompatSpec+      Data.Version.CompatSpec+      Data.Word.CompatSpec+      Foreign.Marshal.Alloc.CompatSpec+      Foreign.Marshal.Utils.CompatSpec+      Numeric.CompatSpec+      System.Environment.CompatSpec+      Text.Read.CompatSpec+  build-depends:+      base >= 4.3 && < 5+    , base-compat-batteries+    , hspec >= 1.8+    , QuickCheck+  build-tool-depends:+      hspec-discover:hspec-discover >= 1.8
+ src/Control/Concurrent/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Concurrent.Compat (+  module Base+) where++import "base-compat" Control.Concurrent.Compat as Base
+ src/Control/Concurrent/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Concurrent.Compat"+-- from a globally unique namespace.+module Control.Concurrent.Compat.Repl.Batteries (+  module Control.Concurrent.Compat+) where+import "this" Control.Concurrent.Compat
+ src/Control/Concurrent/MVar/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Concurrent.MVar.Compat (+  module Base+) where++import "base-compat" Control.Concurrent.MVar.Compat as Base
+ src/Control/Concurrent/MVar/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Concurrent.MVar.Compat"+-- from a globally unique namespace.+module Control.Concurrent.MVar.Compat.Repl.Batteries (+  module Control.Concurrent.MVar.Compat+) where+import "this" Control.Concurrent.MVar.Compat
+ src/Control/Monad/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Monad.Compat (+  module Base+  ) where++import "base-compat" Control.Monad.Compat as Base
+ src/Control/Monad/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Monad.Compat"+-- from a globally unique namespace.+module Control.Monad.Compat.Repl.Batteries (+  module Control.Monad.Compat+) where+import "this" Control.Monad.Compat
+ src/Control/Monad/Fail/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Monad.Fail.Compat (+  module Base+) where++#if MIN_VERSION_base(4,9,0)+import "base-compat" Control.Monad.Fail.Compat as Base+#else+import "fail" Control.Monad.Fail as Base+#endif
+ src/Control/Monad/Fail/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Monad.Fail.Compat"+-- from a globally unique namespace.+module Control.Monad.Fail.Compat.Repl.Batteries (+  module Control.Monad.Fail.Compat+) where+import "this" Control.Monad.Fail.Compat
+ src/Control/Monad/IO/Class/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Monad.IO.Class.Compat (+  module Base+) where++#if MIN_VERSION_base(4,9,0)+import "base-compat" Control.Monad.IO.Class.Compat as Base+#else+import Control.Monad.IO.Class as Base+#endif
+ src/Control/Monad/IO/Class/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Monad.IO.Class.Compat"+-- from a globally unique namespace.+module Control.Monad.IO.Class.Compat.Repl.Batteries (+  module Control.Monad.IO.Class.Compat+) where+import "this" Control.Monad.IO.Class.Compat
+ src/Control/Monad/ST/Lazy/Unsafe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Monad.ST.Lazy.Unsafe.Compat (+  module Base+) where++import "base-compat" Control.Monad.ST.Lazy.Unsafe.Compat as Base
+ src/Control/Monad/ST/Lazy/Unsafe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Monad.ST.Lazy.Unsafe.Compat"+-- from a globally unique namespace.+module Control.Monad.ST.Lazy.Unsafe.Compat.Repl.Batteries (+  module Control.Monad.ST.Lazy.Unsafe.Compat+) where+import "this" Control.Monad.ST.Lazy.Unsafe.Compat
+ src/Control/Monad/ST/Unsafe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Control.Monad.ST.Unsafe.Compat (+  module Base+) where++import "base-compat" Control.Monad.ST.Unsafe.Compat as Base
+ src/Control/Monad/ST/Unsafe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Control.Monad.ST.Unsafe.Compat"+-- from a globally unique namespace.+module Control.Monad.ST.Unsafe.Compat.Repl.Batteries (+  module Control.Monad.ST.Unsafe.Compat+) where+import "this" Control.Monad.ST.Unsafe.Compat
+ src/Data/Bifoldable/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Bifoldable.Compat (+  module Base+) where++#if MIN_VERSION_base(4,10,0)+import "base-compat" Data.Bifoldable.Compat as Base+#else+import "bifunctors" Data.Bifoldable as Base+#endif
+ src/Data/Bifoldable/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Bifoldable.Compat"+-- from a globally unique namespace.+module Data.Bifoldable.Compat.Repl.Batteries (+  module Data.Bifoldable.Compat+) where+import "this" Data.Bifoldable.Compat
+ src/Data/Bifunctor/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Bifunctor.Compat (+  module Base+) where++#if MIN_VERSION_base(4,8,0)+import "base-compat" Data.Bifunctor.Compat as Base+#else+import "bifunctors" Data.Bifunctor as Base+#endif
+ src/Data/Bifunctor/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Bifunctor.Compat"+-- from a globally unique namespace.+module Data.Bifunctor.Compat.Repl.Batteries (+  module Data.Bifunctor.Compat+) where+import "this" Data.Bifunctor.Compat
+ src/Data/Bitraversable/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Bitraversable.Compat (+  module Base+) where++#if MIN_VERSION_base(4,10,0)+import "base-compat" Data.Bitraversable.Compat as Base+#else+import "bifunctors" Data.Bitraversable as Base+#endif
+ src/Data/Bitraversable/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Bitraversable.Compat"+-- from a globally unique namespace.+module Data.Bitraversable.Compat.Repl.Batteries (+  module Data.Bitraversable.Compat+) where+import "this" Data.Bitraversable.Compat
+ src/Data/Bits/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Bits.Compat (+  module Base+) where++import "base-compat" Data.Bits.Compat as Base
+ src/Data/Bits/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Bits.Compat"+-- from a globally unique namespace.+module Data.Bits.Compat.Repl.Batteries (+  module Data.Bits.Compat+) where+import "this" Data.Bits.Compat
+ src/Data/Bool/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Bool.Compat (+  module Base+) where++import "base-compat" Data.Bool.Compat as Base
+ src/Data/Bool/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Bool.Compat"+-- from a globally unique namespace.+module Data.Bool.Compat.Repl.Batteries (+  module Data.Bool.Compat+) where+import "this" Data.Bool.Compat
+ src/Data/Complex/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Complex.Compat (+  module Base+) where++import "base-compat" Data.Complex.Compat as Base
+ src/Data/Complex/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Complex.Compat"+-- from a globally unique namespace.+module Data.Complex.Compat.Repl.Batteries (+  module Data.Complex.Compat+) where+import "this" Data.Complex.Compat
+ src/Data/Either/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Either.Compat (+  module Base+) where++import "base-compat" Data.Either.Compat as Base
+ src/Data/Either/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Either.Compat"+-- from a globally unique namespace.+module Data.Either.Compat.Repl.Batteries (+  module Data.Either.Compat+) where+import "this" Data.Either.Compat
+ src/Data/Foldable/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Foldable.Compat (+  module Base+) where++import "base-compat" Data.Foldable.Compat as Base
+ src/Data/Foldable/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Foldable.Compat"+-- from a globally unique namespace.+module Data.Foldable.Compat.Repl.Batteries (+  module Data.Foldable.Compat+) where+import "this" Data.Foldable.Compat
+ src/Data/Function/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Function.Compat (+  module Base+) where++import "base-compat" Data.Function.Compat as Base
+ src/Data/Function/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Function.Compat"+-- from a globally unique namespace.+module Data.Function.Compat.Repl.Batteries (+  module Data.Function.Compat+) where+import "this" Data.Function.Compat
+ src/Data/Functor/Compat.hs view
@@ -0,0 +1,51 @@+{-# LANGUAGE CPP, NoImplicitPrelude #-}+module Data.Functor.Compat (+  module Base+, Functor(..)+, ($>)+, void+, (<&>)+) where+import Data.Functor as Base++#if !(MIN_VERSION_base(4,7,0))+import Control.Monad.Compat (void)+import Data.Function (flip)+#endif++#if !(MIN_VERSION_base(4,7,0))+infixl 4 $>++-- | Flipped version of '$>'.+--+-- /Since: 4.7.0.0/+($>) :: Functor f => f a -> b -> f b+($>) = flip (<$)+#endif++#if !(MIN_VERSION_base(4,11,0))+-- | Flipped version of '<$>'.+--+-- @+-- ('<&>') = 'flip' 'fmap'+-- @+--+-- /Since: 4.11.0.0/+--+-- ==== __Examples__+-- Apply @(+1)@ to a list, a 'Data.Maybe.Just' and a 'Data.Either.Right':+--+-- >>> Just 2 <&> (+1)+-- Just 3+--+-- >>> [1,2,3] <&> (+1)+-- [2,3,4]+--+-- >>> Right 3 <&> (+1)+-- Right 4+--+(<&>) :: Functor f => f a -> (a -> b) -> f b+as <&> f = f <$> as++infixl 1 <&>+#endif
+ src/Data/Functor/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Functor.Compat"+-- from a globally unique namespace.+module Data.Functor.Compat.Repl.Batteries (+  module Data.Functor.Compat+) where+import "this" Data.Functor.Compat
+ src/Data/Functor/Compose/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Functor.Compose.Compat (+  module Base+) where++#if MIN_VERSION_base(4,9,0)+import "base-compat" Data.Functor.Compose.Compat as Base+#else+import Data.Functor.Compose as Base+#endif
+ src/Data/Functor/Compose/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Functor.Compose.Compat"+-- from a globally unique namespace.+module Data.Functor.Compose.Compat.Repl.Batteries (+  module Data.Functor.Compose.Compat+) where+import "this" Data.Functor.Compose.Compat
+ src/Data/Functor/Const/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Functor.Const.Compat (+  module Base+) where++import "base-compat" Data.Functor.Const.Compat as Base
+ src/Data/Functor/Const/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Functor.Const.Compat"+-- from a globally unique namespace.+module Data.Functor.Const.Compat.Repl.Batteries (+  module Data.Functor.Const.Compat+) where+import "this" Data.Functor.Const.Compat
+ src/Data/Functor/Identity/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Functor.Identity.Compat (+  module Base+) where++#if MIN_VERSION_base(4,8,0)+import "base-compat" Data.Functor.Identity.Compat as Base+#else+import Data.Functor.Identity as Base+#endif
+ src/Data/Functor/Identity/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Functor.Identity.Compat"+-- from a globally unique namespace.+module Data.Functor.Identity.Compat.Repl.Batteries (+  module Data.Functor.Identity.Compat+) where+import "this" Data.Functor.Identity.Compat
+ src/Data/Functor/Product/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Functor.Product.Compat (+  module Base+) where++#if MIN_VERSION_base(4,9,0)+import "base-compat" Data.Functor.Product.Compat as Base+#else+import Data.Functor.Product as Base+#endif
+ src/Data/Functor/Product/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Functor.Product.Compat"+-- from a globally unique namespace.+module Data.Functor.Product.Compat.Repl.Batteries (+  module Data.Functor.Product.Compat+) where+import "this" Data.Functor.Product.Compat
+ src/Data/Functor/Sum/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Functor.Sum.Compat (+  module Base+) where++#if MIN_VERSION_base(4,9,0)+import "base-compat" Data.Functor.Sum.Compat as Base+#else+import Data.Functor.Sum as Base+#endif
+ src/Data/Functor/Sum/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Functor.Sum.Compat"+-- from a globally unique namespace.+module Data.Functor.Sum.Compat.Repl.Batteries (+  module Data.Functor.Sum.Compat+) where+import "this" Data.Functor.Sum.Compat
+ src/Data/IORef/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.IORef.Compat (+  module Base+) where++import "base-compat" Data.IORef.Compat as Base
+ src/Data/IORef/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.IORef.Compat"+-- from a globally unique namespace.+module Data.IORef.Compat.Repl.Batteries (+  module Data.IORef.Compat+) where+import "this" Data.IORef.Compat
+ src/Data/List/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.List.Compat (+  module Base+) where++import "base-compat" Data.List.Compat as Base
+ src/Data/List/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.List.Compat"+-- from a globally unique namespace.+module Data.List.Compat.Repl.Batteries (+  module Data.List.Compat+) where+import "this" Data.List.Compat
+ src/Data/Monoid/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Monoid.Compat (+  module Base+) where++import "base-compat" Data.Monoid.Compat as Base
+ src/Data/Monoid/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Monoid.Compat"+-- from a globally unique namespace.+module Data.Monoid.Compat.Repl.Batteries (+  module Data.Monoid.Compat+) where+import "this" Data.Monoid.Compat
+ src/Data/Proxy/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Proxy.Compat (+  module Base+) where++#if MIN_VERSION_base(4,7,0)+import "base-compat" Data.Proxy.Compat as Base+#else+import "tagged" Data.Proxy as Base+#endif
+ src/Data/Proxy/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Proxy.Compat"+-- from a globally unique namespace.+module Data.Proxy.Compat.Repl.Batteries (+  module Data.Proxy.Compat+) where+import "this" Data.Proxy.Compat
+ src/Data/Ratio/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Ratio.Compat (+  module Base+) where++import "base-compat" Data.Ratio.Compat as Base
+ src/Data/Ratio/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Ratio.Compat"+-- from a globally unique namespace.+module Data.Ratio.Compat.Repl.Batteries (+  module Data.Ratio.Compat+) where+import "this" Data.Ratio.Compat
+ src/Data/STRef/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.STRef.Compat (+  module Base+) where++import "base-compat" Data.STRef.Compat as Base
+ src/Data/STRef/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.STRef.Compat"+-- from a globally unique namespace.+module Data.STRef.Compat.Repl.Batteries (+  module Data.STRef.Compat+) where+import "this" Data.STRef.Compat
+ src/Data/Semigroup/Compat.hs view
@@ -0,0 +1,37 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Semigroup.Compat (+    Semigroup(..)+  , stimesMonoid+  , stimesIdempotent+  , stimesIdempotentMonoid+  , mtimesDefault+  -- * Semigroups+  , Min(..)+  , Max(..)+  , First(..)+  , Last(..)+  , WrappedMonoid(..)+  -- * Re-exported monoids from Data.Monoid+  , Dual(..)+  , Endo(..)+  , All(..)+  , Any(..)+  , Sum(..)+  , Product(..)+  -- * A better monoid for Maybe+  , Option(..)+  , option+  -- * Difference lists of a semigroup+  , diff+  , cycle1+  -- * ArgMin, ArgMax+  , Arg(..)+  , ArgMin+  , ArgMax+  ) where++#if MIN_VERSION_base(4,9,0)+import "base-compat" Data.Semigroup.Compat+#else+import "semigroups" Data.Semigroup+#endif
+ src/Data/Semigroup/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Semigroup.Compat"+-- from a globally unique namespace.+module Data.Semigroup.Compat.Repl.Batteries (+  module Data.Semigroup.Compat+) where+import "this" Data.Semigroup.Compat
+ src/Data/String/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.String.Compat (+  module Base+) where++import "base-compat" Data.String.Compat as Base
+ src/Data/String/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.String.Compat"+-- from a globally unique namespace.+module Data.String.Compat.Repl.Batteries (+  module Data.String.Compat+) where+import "this" Data.String.Compat
+ src/Data/Type/Coercion/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Type.Coercion.Compat (+#if MIN_VERSION_base(4,7,0)+  module Base+#endif+) where++#if MIN_VERSION_base(4,7,0)+import "base-compat" Data.Type.Coercion.Compat as Base+#endif
+ src/Data/Type/Coercion/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Type.Coercion.Compat"+-- from a globally unique namespace.+module Data.Type.Coercion.Compat.Repl.Batteries (+  module Data.Type.Coercion.Compat+) where+import "this" Data.Type.Coercion.Compat
+ src/Data/Version/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Version.Compat (+  module Base+) where++import "base-compat" Data.Version.Compat as Base
+ src/Data/Version/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Version.Compat"+-- from a globally unique namespace.+module Data.Version.Compat.Repl.Batteries (+  module Data.Version.Compat+) where+import "this" Data.Version.Compat
+ src/Data/Void/Compat.hs view
@@ -0,0 +1,12 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Void.Compat (+  Void+, absurd+, vacuous+) where++#if MIN_VERSION_base(4,8,0)+import "base-compat" Data.Void.Compat as Base+#else+import "void" Data.Void as Base+#endif
+ src/Data/Void/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Void.Compat"+-- from a globally unique namespace.+module Data.Void.Compat.Repl.Batteries (+  module Data.Void.Compat+) where+import "this" Data.Void.Compat
+ src/Data/Word/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Data.Word.Compat (+  module Base+) where++import "base-compat" Data.Word.Compat as Base
+ src/Data/Word/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Data.Word.Compat"+-- from a globally unique namespace.+module Data.Word.Compat.Repl.Batteries (+  module Data.Word.Compat+) where+import "this" Data.Word.Compat
+ src/Debug/Trace/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Debug.Trace.Compat (+  module Base+) where++import "base-compat" Debug.Trace.Compat as Base
+ src/Debug/Trace/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Debug.Trace.Compat"+-- from a globally unique namespace.+module Debug.Trace.Compat.Repl.Batteries (+  module Debug.Trace.Compat+) where+import "this" Debug.Trace.Compat
+ src/Foreign/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Compat (+  module Base+) where++import "base-compat" Foreign.Compat as Base
+ src/Foreign/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Compat"+-- from a globally unique namespace.+module Foreign.Compat.Repl.Batteries (+  module Foreign.Compat+) where+import "this" Foreign.Compat
+ src/Foreign/ForeignPtr/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.ForeignPtr.Compat (+  module Base+) where++import "base-compat" Foreign.ForeignPtr.Compat as Base
+ src/Foreign/ForeignPtr/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.ForeignPtr.Compat"+-- from a globally unique namespace.+module Foreign.ForeignPtr.Compat.Repl.Batteries (+  module Foreign.ForeignPtr.Compat+) where+import "this" Foreign.ForeignPtr.Compat
+ src/Foreign/ForeignPtr/Safe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.ForeignPtr.Safe.Compat (+  module Base+) where++import "base-compat" Foreign.ForeignPtr.Safe.Compat as Base
+ src/Foreign/ForeignPtr/Safe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.ForeignPtr.Safe.Compat"+-- from a globally unique namespace.+module Foreign.ForeignPtr.Safe.Compat.Repl.Batteries (+  module Foreign.ForeignPtr.Safe.Compat+) where+import "this" Foreign.ForeignPtr.Safe.Compat
+ src/Foreign/ForeignPtr/Unsafe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.ForeignPtr.Unsafe.Compat (+  module Base+) where++import "base-compat" Foreign.ForeignPtr.Unsafe.Compat as Base
+ src/Foreign/ForeignPtr/Unsafe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.ForeignPtr.Unsafe.Compat"+-- from a globally unique namespace.+module Foreign.ForeignPtr.Unsafe.Compat.Repl.Batteries (+  module Foreign.ForeignPtr.Unsafe.Compat+) where+import "this" Foreign.ForeignPtr.Unsafe.Compat
+ src/Foreign/Marshal/Alloc/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Marshal.Alloc.Compat (+  module Base+) where++import "base-compat" Foreign.Marshal.Alloc.Compat as Base
+ src/Foreign/Marshal/Alloc/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Marshal.Alloc.Compat"+-- from a globally unique namespace.+module Foreign.Marshal.Alloc.Compat.Repl.Batteries (+  module Foreign.Marshal.Alloc.Compat+) where+import "this" Foreign.Marshal.Alloc.Compat
+ src/Foreign/Marshal/Array/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Marshal.Array.Compat (+  module Base+) where++import "base-compat" Foreign.Marshal.Array.Compat as Base
+ src/Foreign/Marshal/Array/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Marshal.Array.Compat"+-- from a globally unique namespace.+module Foreign.Marshal.Array.Compat.Repl.Batteries (+  module Foreign.Marshal.Array.Compat+) where+import "this" Foreign.Marshal.Array.Compat
+ src/Foreign/Marshal/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Marshal.Compat (+  module Base+) where++import "base-compat" Foreign.Marshal.Compat as Base
+ src/Foreign/Marshal/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Marshal.Compat"+-- from a globally unique namespace.+module Foreign.Marshal.Compat.Repl.Batteries (+  module Foreign.Marshal.Compat+) where+import "this" Foreign.Marshal.Compat
+ src/Foreign/Marshal/Safe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Marshal.Safe.Compat (+  module Base+) where++import "base-compat" Foreign.Marshal.Safe.Compat as Base
+ src/Foreign/Marshal/Safe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Marshal.Safe.Compat"+-- from a globally unique namespace.+module Foreign.Marshal.Safe.Compat.Repl.Batteries (+  module Foreign.Marshal.Safe.Compat+) where+import "this" Foreign.Marshal.Safe.Compat
+ src/Foreign/Marshal/Unsafe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Marshal.Unsafe.Compat (+  module Base+) where++import "base-compat" Foreign.Marshal.Unsafe.Compat as Base
+ src/Foreign/Marshal/Unsafe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Marshal.Unsafe.Compat"+-- from a globally unique namespace.+module Foreign.Marshal.Unsafe.Compat.Repl.Batteries (+  module Foreign.Marshal.Unsafe.Compat+) where+import "this" Foreign.Marshal.Unsafe.Compat
+ src/Foreign/Marshal/Utils/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Foreign.Marshal.Utils.Compat (+  module Base+) where++import "base-compat" Foreign.Marshal.Utils.Compat as Base
+ src/Foreign/Marshal/Utils/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Foreign.Marshal.Utils.Compat"+-- from a globally unique namespace.+module Foreign.Marshal.Utils.Compat.Repl.Batteries (+  module Foreign.Marshal.Utils.Compat+) where+import "this" Foreign.Marshal.Utils.Compat
+ src/Numeric/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Numeric.Compat (+  module Base+) where++import "base-compat" Numeric.Compat as Base
+ src/Numeric/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Numeric.Compat"+-- from a globally unique namespace.+module Numeric.Compat.Repl.Batteries (+  module Numeric.Compat+) where+import "this" Numeric.Compat
+ src/Numeric/Natural/Compat.hs view
@@ -0,0 +1,10 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Numeric.Natural.Compat (+  module Base+) where++#if MIN_VERSION_base(4,8,0)+import "base-compat" Numeric.Natural.Compat as Base+#else+import "nats" Numeric.Natural as Base+#endif
+ src/Numeric/Natural/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Numeric.Natural.Compat"+-- from a globally unique namespace.+module Numeric.Natural.Compat.Repl.Batteries (+  module Numeric.Natural.Compat+) where+import "this" Numeric.Natural.Compat
+ src/Prelude/Compat.hs view
@@ -0,0 +1,13 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Prelude.Compat (+  module Base+#if !(MIN_VERSION_base(4,9,0))+, Semi.Semigroup((Semi.<>))+#endif+) where++import "base-compat" Prelude.Compat as Base++#if !(MIN_VERSION_base(4,9,0))+import "semigroups" Data.Semigroup as Semi+#endif
+ src/Prelude/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Prelude.Compat"+-- from a globally unique namespace.+module Prelude.Compat.Repl.Batteries (+  module Prelude.Compat+) where+import "this" Prelude.Compat
+ src/System/Environment/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module System.Environment.Compat (+  module Base+) where++import "base-compat" System.Environment.Compat as Base
+ src/System/Environment/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "System.Environment.Compat"+-- from a globally unique namespace.+module System.Environment.Compat.Repl.Batteries (+  module System.Environment.Compat+) where+import "this" System.Environment.Compat
+ src/System/Exit/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module System.Exit.Compat (+  module Base+) where++import "base-compat" System.Exit.Compat as Base
+ src/System/Exit/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "System.Exit.Compat"+-- from a globally unique namespace.+module System.Exit.Compat.Repl.Batteries (+  module System.Exit.Compat+) where+import "this" System.Exit.Compat
+ src/System/IO/Unsafe/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module System.IO.Unsafe.Compat (+  module Base+) where++import "base-compat" System.IO.Unsafe.Compat as Base
+ src/System/IO/Unsafe/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "System.IO.Unsafe.Compat"+-- from a globally unique namespace.+module System.IO.Unsafe.Compat.Repl.Batteries (+  module System.IO.Unsafe.Compat+) where+import "this" System.IO.Unsafe.Compat
+ src/Text/Read/Compat.hs view
@@ -0,0 +1,6 @@+{-# LANGUAGE CPP, NoImplicitPrelude, PackageImports #-}+module Text.Read.Compat (+  module Base+) where++import "base-compat" Text.Read.Compat as Base
+ src/Text/Read/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Text.Read.Compat"+-- from a globally unique namespace.+module Text.Read.Compat.Repl.Batteries (+  module Text.Read.Compat+) where+import "this" Text.Read.Compat
+ src/Type/Reflection/Compat.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE CPP, NoImplicitPrelude #-}+#if MIN_VERSION_base(4,10,0) && !(MIN_VERSION_base(4,11,0))+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE TypeInType #-}+#endif+module Type.Reflection.Compat (+#if MIN_VERSION_base(4,10,0)+  module Base+, withTypeable+#endif+) where++#if MIN_VERSION_base(4,11,0)+import Type.Reflection as Base+#elif MIN_VERSION_base(4,10,0)+import Type.Reflection as Base hiding (withTypeable)+#endif++#if MIN_VERSION_base(4,10,0) && !(MIN_VERSION_base(4,11,0))+import GHC.Exts (TYPE)+import Type.Reflection (Typeable, TypeRep)+import Unsafe.Coerce (unsafeCoerce)++-- | Use a 'TypeRep' as 'Typeable' evidence.+withTypeable :: forall (a :: k) (r :: TYPE rep). ()+             => TypeRep a -> (Typeable a => r) -> r+withTypeable rep k = unsafeCoerce k' rep+  where k' :: Gift a r+        k' = Gift k++-- | A helper to satisfy the type checker in 'withTypeable'.+newtype Gift a (r :: TYPE rep) = Gift (Typeable a => r)+#endif
+ src/Type/Reflection/Compat/Repl/Batteries.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE PackageImports #-}+{-# OPTIONS_GHC -fno-warn-dodgy-exports -fno-warn-unused-imports #-}+-- | Reexports "Type.Reflection.Compat"+-- from a globally unique namespace.+module Type.Reflection.Compat.Repl.Batteries (+  module Type.Reflection.Compat+) where+import "this" Type.Reflection.Compat
+ test/Control/Monad/CompatSpec.hs view
@@ -0,0 +1,16 @@+module Control.Monad.CompatSpec (main, spec) where++import           Test.Hspec++import           Control.Monad.Compat+import           Prelude ()+import           Prelude.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "(<$!>)" $ do+    it "is a strict version of (<$>)" $ do+      not <$!> [True, False] `shouldBe` not <$> [True, False]
+ test/Data/Bits/CompatSpec.hs view
@@ -0,0 +1,34 @@+{-# LANGUAGE CPP #-}+module Data.Bits.CompatSpec (main, spec) where++import Test.Hspec+import Data.Bits.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "bitDefault" $+    it "sets the ith bit with all other bits clear" $ do+      bitDefault 0 `shouldBe` (1 :: Int)+      bitDefault 1 `shouldBe` (2 :: Int)+      bitDefault 2 `shouldBe` (4 :: Int)+      bitDefault 3 `shouldBe` (8 :: Int)+  describe "testBitDefault" $+    it "returns True if the nth bit of the argument is 1" $ do+      testBitDefault (10 :: Int) 0 `shouldBe` False+      testBitDefault (10 :: Int) 1 `shouldBe` True+      testBitDefault (10 :: Int) 2 `shouldBe` False+      testBitDefault (10 :: Int) 3 `shouldBe` True+  describe "popCountDefault" $+    it "returns the number of set bits in the argument" $ do+      popCountDefault (0  :: Int) `shouldBe` 0+      popCountDefault (1  :: Int) `shouldBe` 1+      popCountDefault (10 :: Int) `shouldBe` 2+#if MIN_VERSION_base(4,7,0)+  describe "toIntegralSized" $+    it "converts an Integral type to another as measured by bitSizeMaybe" $ do+      toIntegralSized (42 :: Integer)                   `shouldBe` (Just 42 :: Maybe Int)+      toIntegralSized (12345678901234567890 :: Integer) `shouldBe` (Nothing :: Maybe Int)+#endif
+ test/Data/Bool/CompatSpec.hs view
@@ -0,0 +1,18 @@+module Data.Bool.CompatSpec (main, spec) where++import           Test.Hspec++import           Data.Bool.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "bool" $ do+    it "evaluates to first parameter if condition is False" $ do+      bool "KO" "OK" False `shouldBe` "KO"++    it "evaluates to second parameter if condition is True" $ do+      bool "KO" "OK" True `shouldBe` "OK"+
+ test/Data/Either/CompatSpec.hs view
@@ -0,0 +1,25 @@+module Data.Either.CompatSpec (main, spec) where++import           Test.Hspec++import           Data.Either.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "isLeft" $ do+    it "returns True for a Left value" $ do+      isLeft (Left "23" :: Either String String) `shouldBe` True++    it "returns False for a Right value" $ do+      isLeft (Right "23" :: Either String String) `shouldBe` False++  describe "isRight" $ do+    it "returns False for a Left value" $ do+      isRight (Left "23" :: Either String String) `shouldBe` False++    it "returns True for a Right value" $ do+      isRight (Right "23" :: Either String String) `shouldBe` True+
+ test/Data/Foldable/CompatSpec.hs view
@@ -0,0 +1,13 @@+module Data.Foldable.CompatSpec (main, spec) where++import            Test.Hspec+import            Data.Foldable.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "maximumBy" $ do+    it "runs in constant space" $ do+      maximumBy compare [1..10000] `shouldBe` (10000 :: Int)
+ test/Data/Function/CompatSpec.hs view
@@ -0,0 +1,13 @@+module Data.Function.CompatSpec (main, spec) where++import           Test.Hspec+import           Data.Function.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "&" $ do+    it "reverses function application" $ do+      (False & not) `shouldBe` True
+ test/Data/Functor/CompatSpec.hs view
@@ -0,0 +1,17 @@+module Data.Functor.CompatSpec (main, spec) where++import           Test.Hspec+import           Data.Functor.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "void" $ do+    it "discards computation result" $ do+      void (return 1 :: IO Int) `shouldReturn` ()++  describe "$>" $ do+    it "is the same as flipped <$" $ do+      (Just 5 :: Maybe Int) $> 6 `shouldBe` (Just 6 :: Maybe Int)
+ test/Data/IORef/CompatSpec.hs view
@@ -0,0 +1,22 @@+module Data.IORef.CompatSpec (main, spec) where++import           Test.Hspec++import           Control.Monad+import           Data.IORef.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "modifyIORef'" $+    it "mutates the contents of an IORef strictly" $ do+      ref <- newIORef 0+      replicateM_ 1000000 $ modifyIORef' ref (+1)+      readIORef ref `shouldReturn` (1000000 :: Int)+  describe "atomicModifyIORef'" $+    it "atomically modifies the contents of an IORef strictly" $ do+      ref <- newIORef 0+      replicateM_ 1000000 . atomicModifyIORef' ref $ \n -> (n+1, ())+      readIORef ref `shouldReturn` (1000000 :: Int)
+ test/Data/List/CompatSpec.hs view
@@ -0,0 +1,43 @@+module Data.List.CompatSpec (main, spec) where++import           Test.Hspec+import           Data.List.Compat++data Asymmetric = A | B deriving Show++instance Eq Asymmetric where+  A == _ = True+  B == _ = False++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "dropWhileEnd" $ do+    it "drops the largest suffix of a list in which a predicate holds for all elements" $ do+      dropWhileEnd (== ' ') "foo "    `shouldBe` "foo"+      dropWhileEnd (== ' ') "foo bar" `shouldBe` "foo bar"+  describe "isSubsequenceOf" $ do+    it "returns True if the first list is a subsequence of the second list" $ do+      isSubsequenceOf "GHC" "The Glorious Haskell Compiler" `shouldBe` True+      isSubsequenceOf "JHC" "The Glorious Haskell Compiler" `shouldBe` False+  describe "nub" $+    it "preserves the order of arguments to (==)" $+      nub [A, B] `shouldBe` [A]+  describe "nubBy" $+    it "preserves the order of arguments to the equality function" $+      nubBy (<) "12" `shouldBe` "1"+  describe "sortOn" $ do+    it "sorts a list by comparing the results of a key function applied to each element" $ do+      sortOn (>='b') "cba" `shouldBe` "acb"+  describe "uncons" $ do+    it "decomposes a list into its head and tail" $ do+      uncons ""   `shouldBe` Nothing+      uncons "12" `shouldBe` Just ('1', "2")+  describe "union" $+    it "nubs arguments in the same order as (==)" $ do+      union [A] [A, B] `shouldBe` [A]+  describe "unionBy" $+    it "nubs arguments in the same order as nubBy's equality function" $ do+      unionBy (<) "1" "21" `shouldBe` "11"
+ test/Data/Monoid/CompatSpec.hs view
@@ -0,0 +1,19 @@+module Data.Monoid.CompatSpec (main, spec) where++import           Test.Hspec+import           Test.QuickCheck++import           Data.Monoid.Compat++import           Prelude ()+import           Prelude.Compat (IO, String, ($))++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "<>" $ do+    it "is an infix synonym for mappend" $ do+      property $ \xs ys -> do+        xs <> ys `shouldBe` (mappend xs ys :: String)
+ test/Data/STRef/CompatSpec.hs view
@@ -0,0 +1,19 @@+module Data.STRef.CompatSpec (main, spec) where++import           Test.Hspec++import           Control.Monad+import           Control.Monad.ST+import           Data.STRef.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec =+  describe "modifySTRef'" $+    it "should mutate the contents of an STRef strictly" $+      shouldBe (1000000 :: Int) $ runST $ do+        ref <- newSTRef 0+        replicateM_ 1000000 $ modifySTRef' ref (+1)+        readSTRef ref
+ test/Data/Version/CompatSpec.hs view
@@ -0,0 +1,10 @@+module Data.Version.CompatSpec (spec) where++import           Test.Hspec+import           Data.Version.Compat++spec :: Spec+spec = do+  describe "makeVersion" $+    it "constructs a tagless Version" $+      makeVersion [1,2,3] `shouldBe` Version [1,2,3] []
+ test/Data/Word/CompatSpec.hs view
@@ -0,0 +1,22 @@+module Data.Word.CompatSpec (main, spec) where++import Test.Hspec+import Data.Word.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "byteSwap16" $+    it "reverses the order of bytes in a Word16 value" $ do+      byteSwap16 0x1100 `shouldBe` 0x0011+      byteSwap16 0x1010 `shouldBe` 0x1010+  describe "byteSwap32" $+    it "reverses the order of bytes in a Word32 value" $ do+      byteSwap32 0x11001010 `shouldBe` 0x10100011+      byteSwap32 0x10101111 `shouldBe` 0x11111010+  describe "byteSwap64" $+    it "reverses the order of bytes in a Word64 value" $ do+      byteSwap64 0x1010111110101111 `shouldBe` 0x1111101011111010+      byteSwap64 0x1100000000000011 `shouldBe` 0x1100000000000011
+ test/Foreign/Marshal/Alloc/CompatSpec.hs view
@@ -0,0 +1,17 @@+module Foreign.Marshal.Alloc.CompatSpec (main, spec) where++import           Test.Hspec++import           Control.Exception+import           Foreign.Marshal.Alloc.Compat+import           Foreign.Storable++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "calloc" $+    it "allocates memory with bytes of value zero" $ do+      bracket calloc free $ \ptr -> do+        peek ptr `shouldReturn` (0 :: Int)
+ test/Foreign/Marshal/Utils/CompatSpec.hs view
@@ -0,0 +1,20 @@+module Foreign.Marshal.Utils.CompatSpec (main, spec) where++import Test.Hspec++import Foreign.Marshal.Alloc+import Foreign.Marshal.Utils.Compat+import Foreign.Ptr+import Foreign.Storable++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "fillBytes" $+    it "fills a given number of bytes in memory area with a byte value" $ do+      alloca $ \ptr -> do+        let _ = ptr :: Ptr Int+        fillBytes ptr 0 $ sizeOf ptr+        peek ptr `shouldReturn` 0
+ test/Numeric/CompatSpec.hs view
@@ -0,0 +1,24 @@+module Numeric.CompatSpec (main, spec) where++import Test.Hspec+import Numeric.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "showFFloatAlt" $ do+    it "shows a RealFloat value, always using decimal notation" $+      showFFloatAlt Nothing  (12 :: Double) "" `shouldBe` "12.0"+    it "allows to specify the number of decimal places" $+      showFFloatAlt (Just 4) (12 :: Double) "" `shouldBe` "12.0000"+  describe "showGFloatAlt" $ do+    it "shows a RealFloat value, using decimal notation if the absolute value lies between 0.1 and 9,999,999" $+      showGFloatAlt Nothing  (12 :: Double) ""         `shouldBe` "12.0"+    it "shows a RealFloat value, using decimal notation and specifying the number of decimal places" $+      showGFloatAlt (Just 4) (12 :: Double) ""         `shouldBe` "12.0000"+    it "shows a RealFloat value, using scientific notation if the absolute value falls outside of the range" $+      showGFloatAlt Nothing  (1234567890 :: Double) "" `shouldBe` "1.23456789e9"+    it "shows a RealFloat value, using scientific notation and specifying the number of decimal places" $+      showGFloatAlt (Just 4) (1234567890 :: Double) "" `shouldBe` "1.2346e9"
+ test/Spec.hs view
@@ -0,0 +1,1 @@+{-# OPTIONS_GHC -F -pgmF hspec-discover #-}
+ test/System/Environment/CompatSpec.hs view
@@ -0,0 +1,126 @@+{-# LANGUAGE CPP #-}+module System.Environment.CompatSpec (main, spec) where++import           Test.Hspec+#if __GLASGOW_HASKELL__ >= 702+import           Test.QuickCheck+#endif++import qualified Control.Exception as E+import           GHC.IO.Exception (IOErrorType (InvalidArgument))+import           System.Environment.Compat+import           System.IO.Error++main :: IO ()+main = hspec spec++withEnv :: String -> String -> IO a -> IO a+withEnv k v action = E.bracket save restore $ \_ -> do+  setEnv k v >> action+  where+    save    = lookupEnv k+    restore = maybe (unsetEnv k) (setEnv k)++withoutEnv :: String -> IO a -> IO a+withoutEnv k action = E.bracket save restore $ \_ -> do+  unsetEnv k >> action+  where+    save    = lookupEnv k+    restore = maybe (unsetEnv k) (setEnv k)++spec :: Spec+spec = do+  describe "lookupEnv" $ do+    it "returns specified environment variable" $ do+      withEnv "FOOBAR" "23" $ do+        lookupEnv "FOOBAR" `shouldReturn` Just "23"++    it "returns Nothing if specified environment variable is not set" $ do+      withoutEnv "FOOBAR" $ do+        lookupEnv "FOOBAR" `shouldReturn` Nothing++  describe "unsetEnv" $ do+    it "removes specified environment variable" $ do+      setEnv "FOO" "foo"+      unsetEnv "FOO"+      getEnv "FOO" `shouldThrow` isDoesNotExistError++    it "does nothing if specified environment variable is not set" $ do+      unsetEnv "BAR"+      unsetEnv "BAR"+      getEnv "BAR" `shouldThrow` isDoesNotExistError++    it "throws an exception if key is the empty string" $ do+      unsetEnv "" `shouldThrow` (== InvalidArgument) . ioeGetErrorType++    it "throws an exception if key contains '='" $ do+      unsetEnv "some=key" `shouldThrow` (== InvalidArgument) . ioeGetErrorType++#if __GLASGOW_HASKELL__ >= 702+    it "works for arbitrary keys" $+      property $ \k -> ('\NUL' `notElem` k && '=' `notElem` k && (not . null) k) ==> do+        setEnv k "foo"+        unsetEnv k+        getEnv k `shouldThrow` isDoesNotExistError+#endif++  describe "setEnv" $ do+    it "sets specified environment variable to given value" $ do+      unsetEnv "FOO"+      setEnv "FOO" "foo"+      getEnv "FOO" `shouldReturn` "foo"++    it "resets specified environment variable, if it is already set" $ do+      unsetEnv "FOO"+      setEnv "FOO" "foo"+      setEnv "FOO" "bar"+      getEnv "FOO" `shouldReturn` "bar"++    it "removes specified environment variable when value is the empty string" $ do+      setEnv "FOO" "foo"+      setEnv "FOO" ""+      getEnv "FOO" `shouldThrow` isDoesNotExistError++    it "removes specified environment variable when first character of value is NUL" $ do+      setEnv "FOO" "foo"+      setEnv "FOO" "\NULfoo"+      getEnv "FOO" `shouldThrow` isDoesNotExistError++    it "truncates value at NUL character" $ do+      unsetEnv "FOO"+      setEnv "FOO" "foo\NULbar"+      getEnv "FOO" `shouldReturn` "foo"++    it "truncates key at NUL character" $ do+      unsetEnv "FOO"+      setEnv "FOO\NULBAR" "foo"+      getEnv "FOO" `shouldReturn` "foo"++#if __GLASGOW_HASKELL__ >= 702+    it "works for unicode" $ do+      unsetEnv "FOO"+      setEnv "FOO" "foo-\955-bar"+      getEnv "FOO" `shouldReturn` "foo-\955-bar"++    it "works for arbitrary values" $+      property $ \v -> ('\NUL' `notElem` v && (not . null) v) ==> do+        setEnv "FOO" v+        getEnv "FOO" `shouldReturn` v+#endif++    it "works for unicode keys" $ do+      setEnv "foo-\955-bar" "foo"+      getEnv "foo-\955-bar" `shouldReturn` "foo"++    it "throws an exception if key is the empty string" $ do+      setEnv "" "foo" `shouldThrow` (== InvalidArgument) . ioeGetErrorType++    it "throws an exception if key contains '='" $ do+      setEnv "some=key" "foo" `shouldThrow` (== InvalidArgument) . ioeGetErrorType++#if __GLASGOW_HASKELL__ >= 702+    it "works for arbitrary keys" $+      property $ \k -> ('\NUL' `notElem` k && '=' `notElem` k && (not . null) k) ==> do+        setEnv k "foo"+        getEnv k `shouldReturn` "foo"+#endif
+ test/Text/Read/CompatSpec.hs view
@@ -0,0 +1,24 @@+module Text.Read.CompatSpec (main, spec) where++import           Test.Hspec++import           Text.Read.Compat++main :: IO ()+main = hspec spec++spec :: Spec+spec = do+  describe "readMaybe" $ do+    it "parses a value" $ do+      readMaybe "23" `shouldBe` (Just 23 :: Maybe Int)++    it "returns Nothing if parsing fails" $ do+      readMaybe "xx" `shouldBe` (Nothing :: Maybe Int)++  describe "readEither" $ do+    it "parses a value" $ do+      readEither "23" `shouldBe` (Right 23 :: Either String Int)++    it "returns Left if parsing fails" $ do+      readEither "xx" `shouldBe` (Left "Prelude.read: no parse" :: Either String Int)