packages feed

universum 0.2.1 → 0.2.2

raw patch · 8 files changed

+86/−31 lines, 8 filesdep +type-operatorsnew-uploader

Dependencies added: type-operators

Files

CHANGES.md view
@@ -1,3 +1,9 @@+0.2.2+=====++* [#33](https://github.com/serokell/universum/issues/33):+  Add `($)` and `Each` type operators.+ 0.2.1 ===== 
src/Containers.hs view
@@ -13,7 +13,7 @@  module Containers        (-       -- * Foldable-like classes and methods+         -- * Foldable-like classes and methods          Element        , Container(..)        , NontrivialContainer(..)@@ -29,7 +29,7 @@        , sequence_        , asum -       -- * Others+         -- * Others        , One(..)        ) where @@ -38,6 +38,7 @@ import           Data.Coerce            (Coercible, coerce) import           Data.Foldable          (Foldable) import qualified Data.Foldable          as F+import           Data.Hashable          (Hashable) import           Data.Maybe             (fromMaybe) import           Data.Monoid            (All(..), Any(..), First(..)) import           Data.Word              (Word8)@@ -53,6 +54,8 @@ import qualified Data.List.NonEmpty     as NE #endif +import qualified Data.Sequence          as SEQ+ import qualified Data.ByteString        as BS import qualified Data.ByteString.Lazy   as BSL @@ -71,7 +74,7 @@ import qualified Data.Vector.Primitive  as VP import qualified Data.Vector.Storable   as VS -import Data.Hashable (Hashable)+import           Applicative            (pass)  ---------------------------------------------------------------------------- -- Containers (e.g. tuples aren't containers)@@ -275,7 +278,7 @@   length = fromIntegral . TL.length   {-# INLINE length #-}   -- will be okay thanks to rewrite rules-  elem c s = TL.isInfixOf (TL.singleton c) s +  elem c s = TL.isInfixOf (TL.singleton c) s   {-# INLINE elem #-}   maximum = TL.maximum   {-# INLINE maximum #-}@@ -377,7 +380,7 @@ traverse_     :: (NontrivialContainer t, Applicative f)     => (Element t -> f b) -> t -> f ()-traverse_ f = foldr ((*>) . f) (pure ())+traverse_ f = foldr ((*>) . f) pass  for_     :: (NontrivialContainer t, Applicative f)@@ -388,7 +391,7 @@ mapM_     :: (NontrivialContainer t, Monad m)     => (Element t -> m b) -> t -> m ()-mapM_ f= foldr ((>>) . f) (return ())+mapM_ f= foldr ((>>) . f) pass  forM_     :: (NontrivialContainer t, Monad m)@@ -399,12 +402,12 @@ sequenceA_     :: (NontrivialContainer t, Applicative f, Element t ~ f a)     => t -> f ()-sequenceA_ = foldr (*>) (pure ())+sequenceA_ = foldr (*>) pass  sequence_     :: (NontrivialContainer t, Monad m, Element t ~ m a)     => t -> m ()-sequence_ = foldr (>>) (return ())+sequence_ = foldr (>>) pass  asum     :: (NontrivialContainer t, Alternative f, Element t ~ f a)@@ -485,6 +488,11 @@     one = (NE.:|[])     {-# INLINE one #-} #endif++instance One (SEQ.Seq a) where+    type OneItem (SEQ.Seq a) = a+    one = (SEQ.empty SEQ.|>)+    {-# INLINE one #-}  -- Monomorphic sequences 
src/Debug.hs view
@@ -18,19 +18,18 @@        ) where  import           Control.Monad          (Monad, return)-import           Data.Text              (Text, unpack)-+import           Control.Monad.IO.Class (MonadIO) import           Data.Data              (Data)+import           Data.Text              (Text, unpack) import           Data.Typeable          (Typeable) import           GHC.Generics           (Generic)--import           Control.Monad.IO.Class (MonadIO)+import           System.IO.Unsafe       (unsafePerformIO)  import qualified Base                   as P import qualified Prelude                as P import           Show                   (Print, putStrLn) -import           System.IO.Unsafe       (unsafePerformIO)+import           Applicative            (pass)  {-# WARNING trace "'trace' remains in code" #-} trace :: Print b => b -> a -> a@@ -58,13 +57,13 @@  {-# WARNING traceShowM "'traceShowM' remains in code" #-} traceShowM :: (P.Show a, Monad m) => a -> m ()-traceShowM a = trace (P.show a) (return ())+traceShowM a = trace (P.show a) pass  {-# WARNING traceM "'traceM' remains in code" #-} traceM :: (Monad m) => Text -> m ()-traceM s = trace (unpack s) (return ())+traceM s = trace (unpack s) pass -{-# WARNING traceId "'traceM' remains in code" #-}+{-# WARNING traceId "'traceId' remains in code" #-} traceId :: Text -> Text traceId s = trace s s 
src/List.hs view
@@ -15,8 +15,6 @@        , zip3        ) where -import           Control.Applicative (Applicative)-import           Control.Monad       (Monad (..)) import           Data.Function       ((.)) import           Data.Functor        (fmap) import           Data.List           (sortBy, unzip, unzip3, zip, zip3)@@ -24,10 +22,13 @@ import qualified Data.Set            as Set  #if ( __GLASGOW_HASKELL__ >= 800 )+import           Control.Applicative (Applicative)+import           Control.Monad       (Monad (..)) import           Data.List.NonEmpty  as X (NonEmpty (..))-#endif  import           Applicative         (pass)+#endif+  sortOn :: (Ord o) => (a -> o) -> [a] -> [a] sortOn = sortBy . comparing
src/Monad.hs view
@@ -65,10 +65,10 @@ #if __GLASGOW_HASKELL__ >= 800 import           Control.Monad.Fail              (MonadFail (..)) #else-import           Prelude                         (String)+import           Prelude                         (Maybe (Nothing), String) import qualified Prelude                         as P (fail)-import           Text.ParserCombinators.ReadP-import           Text.ParserCombinators.ReadPrec+import           Text.ParserCombinators.ReadP    (ReadP)+import           Text.ParserCombinators.ReadPrec (ReadPrec) #endif  concatMapM :: Monad m => (a -> m [b]) -> [a] -> m [b]
+ src/TypeOps.hs view
@@ -0,0 +1,40 @@+{-# LANGUAGE CPP                #-}+{-# LANGUAGE ConstraintKinds    #-}+{-# LANGUAGE DataKinds          #-}+{-# LANGUAGE ExplicitNamespaces #-}+{-# LANGUAGE KindSignatures     #-}+{-# LANGUAGE NoImplicitPrelude  #-}+{-# LANGUAGE PolyKinds          #-}+{-# LANGUAGE TypeFamilies       #-}+{-# LANGUAGE TypeOperators      #-}++module TypeOps+       ( type Each+       , type ($)+       ) where++#if __GLASGOW_HASKELL__ <= 710+import           GHC.Prim              (Constraint)+#else+import           Data.Kind             (Constraint)+#endif++import           Control.Type.Operator (type ($), type (<+>))++-- | Map several constraints over several variables.+--+-- @+-- f :: Each [Show, Read] [a, b] => a -> b -> String+-- =+-- f :: (Show a, Show b, Read a, Show b) => a -> b -> String+-- @+--+-- To specify list with single constraint / variable, don't forget to prefix+-- it with @\'@:+--+-- @+-- f :: Each '[Show] [a, b] => a -> b -> String+-- @+type family Each (c :: [k -> Constraint]) (as :: [k]) where+    Each c '[] = (() :: Constraint)+    Each c (h ': t) = (c <+> h, Each c t)
src/Universum.hs view
@@ -45,6 +45,7 @@ import           Monad                    as X import           Panic                    as X import           Show                     as X+import           TypeOps                  as X  import           Base                     as Base hiding (error, print, putStr, putStrLn,                                                    show, showFloat, showList, showSigned,
universum.cabal view
@@ -1,5 +1,5 @@ name:                universum-version:             0.2.1+version:             0.2.2 synopsis:            Custom prelude used in Serokell description:         Custom prelude used in Serokell homepage:            https://github.com/serokell/universum@@ -7,18 +7,16 @@ license-file:        LICENSE author:              Stephen Diehl maintainer:          hi@serokell.io-copyright:           2016-2016 Stephen Diehl, 2016-2016 Serokell+copyright:           2016-2016 Stephen Diehl, 2016-2017 Serokell category:            Prelude build-type:          Simple-extra-source-files:-  CHANGES.md+extra-source-files:  CHANGES.md cabal-version:       >=1.10+Bug-Reports:         https://github.com/serokell/universum/issues tested-with:-  GHC == 7.10.1,-  GHC == 7.10.2,   GHC == 7.10.3,-  GHC == 8.0.1-Bug-Reports:         https://github.com/serokell/universum/issues+  GHC == 8.0.1,+  GHC == 8.0.2  Source-Repository head     type: git@@ -41,6 +39,7 @@     List     Panic     Show+    TypeOps     Unsafe      Monad@@ -71,10 +70,11 @@     safe                  >= 0.3    && <0.4,     stm                   >= 2.4    && <2.5,     text                  >= 1.2    && <1.3,-    utf8-string           >= 1.0    && <1.1,     text-format,     transformers          >= 0.4    && <0.6,+    type-operators        == 0.1.0.4,     unordered-containers,+    utf8-string           >= 1.0    && <1.1,     vector    hs-source-dirs:      src