packages feed

barbies 0.1.3.1 → 0.1.4.0

raw patch · 6 files changed

+98/−20 lines, 6 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

+ Data.Barbie: Unit :: Unit
+ Data.Barbie: btraverse_ :: (TraversableB b, Applicative t) => (forall a. f a -> t c) -> b f -> t ()
+ Data.Barbie: data Unit (f :: * -> *)
+ Data.Barbie: data Void (f :: * -> *)
+ Data.Barbie.Internal.Traversable: btraverse_ :: (TraversableB b, Applicative t) => (forall a. f a -> t c) -> b f -> t ()

Files

ChangeLog.md view
@@ -1,5 +1,9 @@ # Changelog for barbies +## 0.1.4.0+  - Add btraverse_+  - Add the trivial Void and Unit barbies+ ## 0.1.3.1   - Fix issue on Barbie-types with strictness annotations. 
barbies.cabal view
@@ -1,5 +1,5 @@ name:           barbies-version:        0.1.3.1+version:        0.1.4.0 synopsis:       Classes for working with types that can change clothes. description:    Types that are parametric on a functor are like Barbies that have an outfit for each role. This package provides the basic abstractions to work with them comfortably. category:       Data-structures@@ -43,6 +43,7 @@       Data.Barbie.Internal.Instances       Data.Barbie.Internal.Tags       Data.Barbie.Internal.Wear+      Data.Barbie.Trivial    hs-source-dirs:       src
src/Data/Barbie.hs view
@@ -33,8 +33,8 @@ --     , 'FunctorB', 'TraversableB', 'ProductB', 'ConstraintsB', 'ProofB' --     ) ----- deriving instance 'ConstraintsOf' 'Show' f Barbie => 'Show' Barbie--- deriving instance 'ConstraintsOf' 'Eq'   f Barbie => 'Eq'   Barbie+-- deriving instance 'ConstraintsOf' 'Show' f Barbie => 'Show' (Barbie f)+-- deriving instance 'ConstraintsOf' 'Eq'   f Barbie => 'Eq'   (Barbie f) -- @ -- -- Sometimes one wants to use @Barbie 'Data.Functor.Identity.Identity'@@@ -72,6 +72,7 @@      -- * Traversable   , TraversableB(btraverse)+  , btraverse_   , bsequence      -- * Product@@ -92,6 +93,10 @@      -- * Wrapper   , Barbie(..)++    -- * Trivial Barbies+  , Void+  , Unit (..)   )  where@@ -106,4 +111,5 @@   , bzip, bunzip, bzipWith, bzipWith3, bzipWith4   , (/*/), (/*)   )-import Data.Barbie.Internal.Traversable(TraversableB(..), bsequence)+import Data.Barbie.Internal.Traversable(TraversableB(..), bsequence, btraverse_)+import Data.Barbie.Trivial(Void, Unit(..))
src/Data/Barbie/Internal/Traversable.hs view
@@ -13,6 +13,7 @@ {-# LANGUAGE TypeOperators      #-} module Data.Barbie.Internal.Traversable   ( TraversableB(..)+  , btraverse_   , bsequence    , CanDeriveGenericInstance@@ -25,7 +26,9 @@ import Data.Barbie.Internal.Functor (FunctorB(..)) import Data.Barbie.Internal.Generics import Data.Barbie.Internal.Tags (F,G)+import Data.Functor (void) import Data.Functor.Compose (Compose(..))+import Data.Functor.Const (Const(..)) import GHC.Generics  @@ -48,6 +51,13 @@     => (forall a . f a -> t (g a)) -> b f -> t (b g)   btraverse = gbtraverseDefault +++-- | Map each element to an action, evaluate these actions from left to right,+--   and ignore the results.+btraverse_ :: (TraversableB b, Applicative t) => (forall a. f a -> t c) -> b f -> t ()+btraverse_ f+  = void . btraverse (fmap (const $ Const ()) . f)   -- | Evaluate each action in the structure from left to right,
+ src/Data/Barbie/Trivial.hs view
@@ -0,0 +1,73 @@+{-# LANGUAGE EmptyCase            #-}+{-# LANGUAGE DeriveGeneric        #-}+{-# LANGUAGE DeriveDataTypeable   #-}+{-# LANGUAGE KindSignatures       #-}+{-# LANGUAGE StandaloneDeriving   #-}+module Data.Barbie.Trivial+  ( Void+  , Unit (..)+  )++where++import Data.Barbie.Internal.Bare(BareB(..))+import Data.Barbie.Internal.Constraints(ConstraintsB(..))+import Data.Barbie.Internal.Functor(FunctorB(..))+import Data.Barbie.Internal.ProofB(ProofB(..))+import Data.Barbie.Internal.Product(ProductB(..))+import Data.Barbie.Internal.Traversable(TraversableB(..))++import Data.Data (Data(..))+import Data.Semigroup (Semigroup(..))+import Data.Typeable (Typeable)+import GHC.Generics (Generic)+++---------------------------------------------------+-- Trivial Barbies+---------------------------------------------------++-- | Uninhabited barbie type.+data Void (f :: * -> *)+  deriving (Generic, Typeable)++instance Eq   (Void f) where+  (==) v = case v of++instance Ord  (Void f) where+  compare v = case v of++instance Show (Void f) where+  showsPrec _ v = case v of++instance Semigroup (Void f) where+  (<>) v = case v of+++instance FunctorB Void+instance TraversableB Void+instance ConstraintsB Void+instance BareB Void+++-- | A barbie type without structure.+data Unit (f :: * -> *)+  = Unit+  deriving+    ( Data, Generic, Typeable+    , Eq, Ord, Read, Show+    )++instance Semigroup (Unit f) where+  Unit <> Unit = Unit++instance Monoid (Unit f) where+  mempty  = Unit+  mappend = (<>)++instance FunctorB Unit+instance TraversableB Unit+instance ProductB Unit+instance ConstraintsB Unit+instance ProofB Unit+instance BareB Unit
test/Barbies.hs view
@@ -1,7 +1,6 @@ {-# LANGUAGE DeriveAnyClass       #-} {-# LANGUAGE DeriveGeneric        #-} {-# LANGUAGE DeriveDataTypeable   #-}-{-# LANGUAGE EmptyCase            #-} {-# LANGUAGE KindSignatures       #-} {-# LANGUAGE StandaloneDeriving   #-} {-# LANGUAGE TypeFamilies         #-}@@ -45,21 +44,6 @@ import Data.Typeable import GHC.Generics import Test.Tasty.QuickCheck-------------------------------------------------------- Trivial Barbies------------------------------------------------------data Void (f :: * -> *)-  deriving (Generic, Typeable)--instance Eq   (Void f) where (==) v = case v of-instance Show (Void f) where showsPrec _ v = case v of--instance FunctorB Void-instance TraversableB Void-instance ConstraintsB Void-instance BareB Void  ---------------------------------------------------- -- Product Barbies