protolude 0.1.3 → 0.1.4
raw patch · 4 files changed
+77/−12 lines, 4 files
Files
- protolude.cabal +3/−1
- src/Base.hs +18/−0
- src/Monad.hs +2/−2
- src/Protolude.hs +54/−9
protolude.cabal view
@@ -1,5 +1,5 @@ name: protolude-version: 0.1.3+version: 0.1.4 synopsis: A sensible set of defaults for writing custom Preludes. description: A sensible set of defaults for writing custom Preludes. homepage: https://github.com/sdiehl/protolude@@ -50,10 +50,12 @@ default-extensions: NoImplicitPrelude OverloadedStrings+ FlexibleContexts MultiParamTypeClasses ghc-options: -Wall+ -fwarn-implicit-prelude build-depends: base >= 4.6 && <4.10,
src/Base.hs view
@@ -1,6 +1,7 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE Unsafe #-} {-# LANGUAGE BangPatterns #-}+{-# LANGUAGE ExplicitNamespaces #-} {-# LANGUAGE NoImplicitPrelude #-} module Base (@@ -49,6 +50,23 @@ , Coercible #endif )++#if ( __GLASGOW_HASKELL__ >= 800 )+import GHC.OverloadedLabels as X (+ IsLabel(..)+ )++{-+import GHC.Records as X (+ HasField(..)+ )+-}++import Data.Kind as X (+ type (*)+ , type Type+ )+#endif infixr 0 $!
src/Monad.hs view
@@ -3,7 +3,7 @@ {-# LANGUAGE NoImplicitPrelude #-} module Monad (- Monad(..)+ Monad((>>=), return) , MonadPlus(..) , (=<<)@@ -48,7 +48,7 @@ import Control.Monad #endif -concatMapM :: (Monad m) => (a -> m [b]) -> [a] -> m [b]+concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b] concatMapM f xs = liftM concat (mapM f xs) liftM' :: Monad m => (a -> b) -> m a -> m b
src/Protolude.hs view
@@ -1,16 +1,19 @@ {-# LANGUAGE CPP #-} {-# LANGUAGE Trustworthy #-} {-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE ExplicitNamespaces #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} module Protolude ( module X, module Base, identity,+ map, (&), uncons, applyN, print,+ show, LText, LByteString,@@ -29,9 +32,13 @@ putStr , putStrLn , print+ , show ) import qualified Base as PBase +-- Used for 'show'+import Data.String (String)+ -- Maybe'ized version of partial functions import Safe as X ( headMay@@ -68,7 +75,6 @@ -- Base typeclasses import Data.Eq as X import Data.Ord as X-import Data.Monoid as X import Data.Traversable as X import Data.Foldable as X hiding ( foldr1@@ -77,6 +83,13 @@ import Data.Semiring as X import Data.Functor.Identity as X +#if ( __GLASGOW_HASKELL__ >= 800 )+import Data.Monoid as X hiding ((<>))+import Data.Semigroup as X ( Semigroup(..) )+#else+import Data.Monoid as X+#endif+ #if (__GLASGOW_HASKELL__ >= 710) import Data.Bifunctor as X (Bifunctor(..)) #else@@ -123,6 +136,7 @@ , zipWith , zip )+ import Data.Map as X (Map) import Data.Set as X (Set) import Data.Sequence as X (Seq)@@ -134,6 +148,28 @@ Proxy(..) ) +import Data.Typeable as X (+ TypeRep+ , Typeable+ , typeRep+ , cast+ , eqT+ )++import Data.Type.Coercion as X (+ Coercion(..)+ , coerceWith+ )++import Data.Type.Equality as X (+ (:~:)(..)+ , type (==)+ , sym+ , trans+ , castWith+ , gcastWith+ )+ import Data.Void as X ( Void , absurd@@ -192,11 +228,11 @@ import Data.Int as X import Data.Bits as X import Data.Word as X-import Data.Bool as X hiding (bool)-import Data.Char as X (chr)-import Data.Maybe as X hiding (fromJust) import Data.Either as X import Data.Complex as X+import Data.Char as X (chr)+import Data.Bool as X hiding (bool)+import Data.Maybe as X hiding (fromJust) import Data.Function as X ( const@@ -208,7 +244,7 @@ ) -- Genericss-import GHC.Generics (+import GHC.Generics as X ( Generic(..) , Rep , K1(..)@@ -224,6 +260,9 @@ , Constructor(..) , Selector(..) , Fixity(..)+#if ( __GLASGOW_HASKELL__ >= 800 )+ , Meta(..)+#endif ) -- ByteString@@ -261,10 +300,7 @@ import System.Exit as X --import System.Info as X import System.Environment as X (getArgs)-import System.IO as X (- Handle- , hClose- )+import System.IO as X (Handle) -- ST import Control.Monad.ST as X@@ -297,6 +333,9 @@ identity :: a -> a identity x = x +map :: Functor f => (a -> b) -> f a -> f b+map = fmap+ uncons :: [a] -> Maybe (a, [a]) uncons [] = Nothing uncons (x:xs) = Just (x, xs)@@ -306,3 +345,9 @@ print :: (X.MonadIO m, PBase.Show a) => a -> m () print = liftIO . PBase.print++show :: (Show a, StringConv String b) => a -> b+show x = toS (PBase.show x)+{-# SPECIALIZE show :: Show a => a -> String #-}+{-# SPECIALIZE show :: Show a => a -> Text #-}+{-# SPECIALIZE show :: Show a => a -> LText #-}