packages feed

intro 0.2.0.1 → 0.2.0.2

raw patch · 9 files changed

+132/−83 lines, 9 filesdep +aesondep +asyncdep +attoparsecPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependencies added: aeson, async, attoparsec, cassava, contravariant, filepath, megaparsec, profunctors

API changes (from Hackage documentation)

- Intro: mplus :: MonadPlus m => m a -> m a -> m a
- Intro: mzero :: MonadPlus m => m a

Files

README.md view
@@ -15,7 +15,7 @@  List of design decisions: -* Keep everything at one place (There are one two modules and Intro.Trustworthy is only there for Safe Haskell)+* Keep everything at one place (There are three modules and Intro.Trustworthy is only there for Safe Haskell) * Conservative extension over the base Prelude * Rely only on very common external libraries * Avoid writing custom functions@@ -27,4 +27,4 @@ * Prefer generic functions * Debugging functions, like 'Intro.Trustworthy.trace' and 'undefined' are available but produce compile time warnings * Don't provide error, only panic instead-* Compatibility with Control.Lens+* Compatibility with unqualified import of Control.Lens
intro.cabal view
@@ -3,7 +3,7 @@ -- see: https://github.com/sol/hpack  name:           intro-version:        0.2.0.1+version:        0.2.0.2 synopsis:       "Fixed Prelude" - Mostly total and safe, provides Text and Monad transformers description:    Intro is a modern Prelude which provides safe alternatives                 for most of the partial functions and follows other@@ -91,14 +91,26 @@     , transformers         >= 0.4     && < 0.6     , unordered-containers >= 0.2     && < 0.3     , writer-cps-mtl       >= 0.1.1.2 && < 0.2+    , QuickCheck+    , aeson+    , async+    , attoparsec+    , cassava+    , contravariant+    , filepath     , intro     , lens-    , QuickCheck+    , megaparsec+    , profunctors     , quickcheck-instances   if impl(ghc < 8.0)     build-depends:         semigroups >= 0.9 && < 1   other-modules:+      AesonCompat+      AttoparsecCompat       BaseCompat       LensCompat+      LibCompat+      MegaparsecCompat   default-language: Haskell2010
src/Intro.hs view
@@ -28,7 +28,7 @@ -- -- List of design decisions: ----- * Keep everything at one place (There are one two modules and Intro.Trustworthy is only there for Safe Haskell)+-- * Keep everything at one place (There are only three modules and Intro.Trustworthy is only there for Safe Haskell) -- * Conservative extension over the base Prelude -- * Rely only on very common external libraries -- * Avoid writing custom functions@@ -40,7 +40,7 @@ -- * Prefer generic functions -- * Debugging functions, like 'trace' and 'undefined' are available but produce compile time warnings -- * Don't provide error, only panic instead--- * Compatibility with Control.Lens+-- * Compatibility with unqualified import of Control.Lens -- -- Some 'Prelude' functions are missing from 'Intro'. More general variants are available for the following functions: --@@ -502,7 +502,7 @@   , (Control.Monad.=<<)   , (Control.Monad.<=<)   , (Control.Monad.>=>)-  , Control.Monad.MonadPlus(mzero, mplus)+  , Control.Monad.MonadPlus   , Control.Monad.join   , Control.Monad.guard   , Control.Monad.when
src/Intro/ConvertString.hs view
@@ -31,6 +31,7 @@ import Control.DeepSeq (NFData) import Data.Binary (Binary) import Data.ByteString (ByteString)+import Data.ByteString.Short (ShortByteString) import Data.Either.Extra (eitherToMaybe) import Data.Eq (Eq) import Data.Foldable (Foldable)@@ -44,11 +45,11 @@ import Data.Traversable (Traversable) import Data.Word (Word8) import GHC.Generics (Generic, Generic1)-import Text.Show (Show) import Text.Read (Read)+import Text.Show (Show) import qualified Data.ByteString as B-import qualified Data.ByteString.Short as S import qualified Data.ByteString.Lazy as BL+import qualified Data.ByteString.Short as S import qualified Data.Text as T import qualified Data.Text.Encoding as TE import qualified Data.Text.Lazy as TL@@ -99,77 +100,77 @@ instance Binary a => Binary (Lenient a) instance NFData a => NFData (Lenient a) -instance ConvertString BL.ByteString     (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . TL.unpack . TLE.decodeUtf8With lenientDecode-instance ConvertString BL.ByteString     (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode-instance ConvertString BL.ByteString     (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode . BL.toStrict-instance ConvertString BL.ByteString     (Maybe   String)  where {-# INLINE convertString #-}; convertString = fmap TL.unpack . eitherToMaybe . TLE.decodeUtf8'-instance ConvertString BL.ByteString     (Maybe   TL.Text) where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8'-instance ConvertString BL.ByteString     (Maybe   Text)    where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8' . BL.toStrict-instance ConvertString BL.ByteString     BL.ByteString     where {-# INLINE convertString #-}; convertString = id-instance ConvertString BL.ByteString     ByteString        where {-# INLINE convertString #-}; convertString = BL.toStrict-instance ConvertString BL.ByteString     S.ShortByteString where {-# INLINE convertString #-}; convertString = S.toShort . BL.toStrict-instance ConvertString BL.ByteString     [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack-instance ConvertString ByteString        (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . T.unpack . TE.decodeUtf8With lenientDecode-instance ConvertString ByteString        (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode . BL.fromStrict-instance ConvertString ByteString        (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode-instance ConvertString ByteString        (Maybe   String)  where {-# INLINE convertString #-}; convertString = fmap T.unpack . eitherToMaybe . TE.decodeUtf8'-instance ConvertString ByteString        (Maybe   TL.Text) where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8' . BL.fromStrict-instance ConvertString ByteString        (Maybe   Text)    where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8'-instance ConvertString ByteString        BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.fromStrict-instance ConvertString ByteString        ByteString        where {-# INLINE convertString #-}; convertString = id-instance ConvertString ByteString        S.ShortByteString where {-# INLINE convertString #-}; convertString = S.toShort-instance ConvertString ByteString        [Word8]           where {-# INLINE convertString #-}; convertString = B.unpack-instance ConvertString S.ShortByteString (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . T.unpack . TE.decodeUtf8With lenientDecode . S.fromShort-instance ConvertString S.ShortByteString (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode . BL.fromStrict . S.fromShort-instance ConvertString S.ShortByteString (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode . S.fromShort-instance ConvertString S.ShortByteString (Maybe   String)  where {-# INLINE convertString #-}; convertString = fmap T.unpack . eitherToMaybe . TE.decodeUtf8' . S.fromShort-instance ConvertString S.ShortByteString (Maybe   TL.Text) where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8' . BL.fromStrict . S.fromShort-instance ConvertString S.ShortByteString (Maybe   Text)    where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8' . S.fromShort-instance ConvertString S.ShortByteString BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.fromStrict . S.fromShort-instance ConvertString S.ShortByteString ByteString        where {-# INLINE convertString #-}; convertString = S.fromShort-instance ConvertString S.ShortByteString S.ShortByteString where {-# INLINE convertString #-}; convertString = id-instance ConvertString S.ShortByteString [Word8]           where {-# INLINE convertString #-}; convertString = S.unpack-instance ConvertString String            BL.ByteString     where {-# INLINE convertString #-}; convertString = TLE.encodeUtf8 . TL.pack-instance ConvertString String            ByteString        where {-# INLINE convertString #-}; convertString = TE.encodeUtf8 . T.pack-instance ConvertString String            S.ShortByteString where {-# INLINE convertString #-}; convertString = S.toShort . TE.encodeUtf8 . T.pack-instance ConvertString String            String            where {-# INLINE convertString #-}; convertString = id-instance ConvertString String            TL.Text           where {-# INLINE convertString #-}; convertString = TL.pack-instance ConvertString String            Text              where {-# INLINE convertString #-}; convertString = T.pack-instance ConvertString String            [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack . TLE.encodeUtf8 . TL.pack-instance ConvertString TL.Text           BL.ByteString     where {-# INLINE convertString #-}; convertString = TLE.encodeUtf8-instance ConvertString TL.Text           ByteString        where {-# INLINE convertString #-}; convertString = BL.toStrict . TLE.encodeUtf8-instance ConvertString TL.Text           S.ShortByteString where {-# INLINE convertString #-}; convertString = S.toShort . BL.toStrict . TLE.encodeUtf8-instance ConvertString TL.Text           String            where {-# INLINE convertString #-}; convertString = TL.unpack-instance ConvertString TL.Text           TL.Text           where {-# INLINE convertString #-}; convertString = id-instance ConvertString TL.Text           Text              where {-# INLINE convertString #-}; convertString = TL.toStrict-instance ConvertString TL.Text           [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack . TLE.encodeUtf8-instance ConvertString Text              BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.fromStrict . TE.encodeUtf8-instance ConvertString Text              ByteString        where {-# INLINE convertString #-}; convertString = TE.encodeUtf8-instance ConvertString Text              S.ShortByteString where {-# INLINE convertString #-}; convertString = S.toShort . TE.encodeUtf8-instance ConvertString Text              String            where {-# INLINE convertString #-}; convertString = T.unpack-instance ConvertString Text              TL.Text           where {-# INLINE convertString #-}; convertString = TL.fromStrict-instance ConvertString Text              Text              where {-# INLINE convertString #-}; convertString = id-instance ConvertString Text              [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack . BL.fromStrict . TE.encodeUtf8-instance ConvertString [Word8]           (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . TL.unpack . TLE.decodeUtf8With lenientDecode . BL.pack-instance ConvertString [Word8]           (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode . BL.pack-instance ConvertString [Word8]           (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode . B.pack-instance ConvertString [Word8]           (Maybe String)    where {-# INLINE convertString #-}; convertString = fmap TL.unpack . eitherToMaybe . TLE.decodeUtf8' . BL.pack-instance ConvertString [Word8]           (Maybe TL.Text)   where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8' . BL.pack-instance ConvertString [Word8]           (Maybe Text)      where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8' . B.pack-instance ConvertString [Word8]           BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.pack-instance ConvertString [Word8]           ByteString        where {-# INLINE convertString #-}; convertString = B.pack-instance ConvertString [Word8]           S.ShortByteString where {-# INLINE convertString #-}; convertString = S.pack-instance ConvertString [Word8]           [Word8]           where {-# INLINE convertString #-}; convertString = id+instance ConvertString BL.ByteString   (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . TL.unpack . TLE.decodeUtf8With lenientDecode+instance ConvertString BL.ByteString   (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode+instance ConvertString BL.ByteString   (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode . BL.toStrict+instance ConvertString BL.ByteString   (Maybe   String)  where {-# INLINE convertString #-}; convertString = fmap TL.unpack . eitherToMaybe . TLE.decodeUtf8'+instance ConvertString BL.ByteString   (Maybe   TL.Text) where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8'+instance ConvertString BL.ByteString   (Maybe   Text)    where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8' . BL.toStrict+instance ConvertString BL.ByteString   BL.ByteString     where {-# INLINE convertString #-}; convertString = id+instance ConvertString BL.ByteString   ByteString        where {-# INLINE convertString #-}; convertString = BL.toStrict+instance ConvertString BL.ByteString   ShortByteString   where {-# INLINE convertString #-}; convertString = S.toShort . BL.toStrict+instance ConvertString BL.ByteString   [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack+instance ConvertString ByteString      (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . T.unpack . TE.decodeUtf8With lenientDecode+instance ConvertString ByteString      (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode . BL.fromStrict+instance ConvertString ByteString      (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode+instance ConvertString ByteString      (Maybe   String)  where {-# INLINE convertString #-}; convertString = fmap T.unpack . eitherToMaybe . TE.decodeUtf8'+instance ConvertString ByteString      (Maybe   TL.Text) where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8' . BL.fromStrict+instance ConvertString ByteString      (Maybe   Text)    where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8'+instance ConvertString ByteString      BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.fromStrict+instance ConvertString ByteString      ByteString        where {-# INLINE convertString #-}; convertString = id+instance ConvertString ByteString      ShortByteString   where {-# INLINE convertString #-}; convertString = S.toShort+instance ConvertString ByteString      [Word8]           where {-# INLINE convertString #-}; convertString = B.unpack+instance ConvertString ShortByteString (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . T.unpack . TE.decodeUtf8With lenientDecode . S.fromShort+instance ConvertString ShortByteString (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode . BL.fromStrict . S.fromShort+instance ConvertString ShortByteString (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode . S.fromShort+instance ConvertString ShortByteString (Maybe   String)  where {-# INLINE convertString #-}; convertString = fmap T.unpack . eitherToMaybe . TE.decodeUtf8' . S.fromShort+instance ConvertString ShortByteString (Maybe   TL.Text) where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8' . BL.fromStrict . S.fromShort+instance ConvertString ShortByteString (Maybe   Text)    where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8' . S.fromShort+instance ConvertString ShortByteString BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.fromStrict . S.fromShort+instance ConvertString ShortByteString ByteString        where {-# INLINE convertString #-}; convertString = S.fromShort+instance ConvertString ShortByteString ShortByteString   where {-# INLINE convertString #-}; convertString = id+instance ConvertString ShortByteString [Word8]           where {-# INLINE convertString #-}; convertString = S.unpack+instance ConvertString String          BL.ByteString     where {-# INLINE convertString #-}; convertString = TLE.encodeUtf8 . TL.pack+instance ConvertString String          ByteString        where {-# INLINE convertString #-}; convertString = TE.encodeUtf8 . T.pack+instance ConvertString String          ShortByteString   where {-# INLINE convertString #-}; convertString = S.toShort . TE.encodeUtf8 . T.pack+instance ConvertString String          String            where {-# INLINE convertString #-}; convertString = id+instance ConvertString String          TL.Text           where {-# INLINE convertString #-}; convertString = TL.pack+instance ConvertString String          Text              where {-# INLINE convertString #-}; convertString = T.pack+instance ConvertString String          [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack . TLE.encodeUtf8 . TL.pack+instance ConvertString TL.Text         BL.ByteString     where {-# INLINE convertString #-}; convertString = TLE.encodeUtf8+instance ConvertString TL.Text         ByteString        where {-# INLINE convertString #-}; convertString = BL.toStrict . TLE.encodeUtf8+instance ConvertString TL.Text         ShortByteString   where {-# INLINE convertString #-}; convertString = S.toShort . BL.toStrict . TLE.encodeUtf8+instance ConvertString TL.Text         String            where {-# INLINE convertString #-}; convertString = TL.unpack+instance ConvertString TL.Text         TL.Text           where {-# INLINE convertString #-}; convertString = id+instance ConvertString TL.Text         Text              where {-# INLINE convertString #-}; convertString = TL.toStrict+instance ConvertString TL.Text         [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack . TLE.encodeUtf8+instance ConvertString Text            BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.fromStrict . TE.encodeUtf8+instance ConvertString Text            ByteString        where {-# INLINE convertString #-}; convertString = TE.encodeUtf8+instance ConvertString Text            ShortByteString   where {-# INLINE convertString #-}; convertString = S.toShort . TE.encodeUtf8+instance ConvertString Text            String            where {-# INLINE convertString #-}; convertString = T.unpack+instance ConvertString Text            TL.Text           where {-# INLINE convertString #-}; convertString = TL.fromStrict+instance ConvertString Text            Text              where {-# INLINE convertString #-}; convertString = id+instance ConvertString Text            [Word8]           where {-# INLINE convertString #-}; convertString = BL.unpack . BL.fromStrict . TE.encodeUtf8+instance ConvertString [Word8]         (Lenient String)  where {-# INLINE convertString #-}; convertString = Lenient . TL.unpack . TLE.decodeUtf8With lenientDecode . BL.pack+instance ConvertString [Word8]         (Lenient TL.Text) where {-# INLINE convertString #-}; convertString = Lenient . TLE.decodeUtf8With lenientDecode . BL.pack+instance ConvertString [Word8]         (Lenient Text)    where {-# INLINE convertString #-}; convertString = Lenient . TE.decodeUtf8With lenientDecode . B.pack+instance ConvertString [Word8]         (Maybe String)    where {-# INLINE convertString #-}; convertString = fmap TL.unpack . eitherToMaybe . TLE.decodeUtf8' . BL.pack+instance ConvertString [Word8]         (Maybe TL.Text)   where {-# INLINE convertString #-}; convertString = eitherToMaybe . TLE.decodeUtf8' . BL.pack+instance ConvertString [Word8]         (Maybe Text)      where {-# INLINE convertString #-}; convertString = eitherToMaybe . TE.decodeUtf8' . B.pack+instance ConvertString [Word8]         BL.ByteString     where {-# INLINE convertString #-}; convertString = BL.pack+instance ConvertString [Word8]         ByteString        where {-# INLINE convertString #-}; convertString = B.pack+instance ConvertString [Word8]         ShortByteString   where {-# INLINE convertString #-}; convertString = S.pack+instance ConvertString [Word8]         [Word8]           where {-# INLINE convertString #-}; convertString = id -instance EncodeString  String            BL.ByteString-instance EncodeString  String            ByteString-instance EncodeString  String            S.ShortByteString-instance EncodeString  String            [Word8]-instance EncodeString  TL.Text           BL.ByteString-instance EncodeString  TL.Text           ByteString-instance EncodeString  TL.Text           S.ShortByteString-instance EncodeString  TL.Text           [Word8]-instance EncodeString  Text              BL.ByteString-instance EncodeString  Text              ByteString-instance EncodeString  Text              S.ShortByteString-instance EncodeString  Text              [Word8]+instance EncodeString  String          BL.ByteString+instance EncodeString  String          ByteString+instance EncodeString  String          ShortByteString+instance EncodeString  String          [Word8]+instance EncodeString  TL.Text         BL.ByteString+instance EncodeString  TL.Text         ByteString+instance EncodeString  TL.Text         ShortByteString+instance EncodeString  TL.Text         [Word8]+instance EncodeString  Text            BL.ByteString+instance EncodeString  Text            ByteString+instance EncodeString  Text            ShortByteString+instance EncodeString  Text            [Word8]
+ test/AesonCompat.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE NoImplicitPrelude #-}+module AesonCompat (+  module X+) where++import Intro as X+import Data.Aeson as X hiding ((.:))
+ test/AttoparsecCompat.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE NoImplicitPrelude #-}+module AttoparsecCompat (+  module X+) where++import Intro as X+import Data.Attoparsec.ByteString as X hiding (take, skip, takeWhile)
+ test/LibCompat.hs view
@@ -0,0 +1,11 @@+{-# LANGUAGE NoImplicitPrelude #-}+module LibCompat (+  module X+) where++import Control.Concurrent.Async as X+import Data.Functor.Contravariant as X+import Data.Csv as X hiding (lookup, (.:))+import Data.Profunctor as X+import Intro as X+import System.FilePath as X
+ test/MegaparsecCompat.hs view
@@ -0,0 +1,8 @@+{-# LANGUAGE NoImplicitPrelude #-}+module MegaparsecCompat (+  module X+) where++import Intro as X+import Text.Megaparsec.Text as X+import Text.Megaparsec.Lexer as X
test/test.hs view
@@ -5,10 +5,13 @@ {-# LANGUAGE ScopedTypeVariables #-} module Main where -import BaseCompat () import Data.ByteString.Short (ShortByteString) import Intro+import LibCompat () import LensCompat ()+import AesonCompat ()+import AttoparsecCompat ()+import MegaparsecCompat () import Test.QuickCheck import Test.QuickCheck.Instances ()