packages feed

newtype-zoo 1.1.0.0 → 1.2.0.0

raw patch · 10 files changed

+241/−7 lines, 10 filesdep +comonadPVP ok

version bump matches the API change (PVP)

Dependencies added: comonad

API changes (from Hackage documentation)

+ NewtypeZoo.Active: instance Control.Comonad.Comonad NewtypeZoo.Active.Active
+ NewtypeZoo.Allocated: instance Control.Comonad.Comonad NewtypeZoo.Allocated.Allocated
+ NewtypeZoo.Available: Available :: a -> Available a
+ NewtypeZoo.Available: AvailableIn :: a -> AvailableIn ctx a
+ NewtypeZoo.Available: _theAvailable :: Available x -> x
+ NewtypeZoo.Available: _theAvailableIn :: AvailableIn ctx x -> x
+ NewtypeZoo.Available: instance Control.Comonad.Comonad (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Control.Comonad.Comonad NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance Control.Monad.Fix.MonadFix (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Control.Monad.Fix.MonadFix NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Control.Monad.Zip.MonadZip (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Control.Monad.Zip.MonadZip NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Bits.Bits a => Data.Bits.Bits (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance Data.Bits.Bits a => Data.Bits.Bits (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance Data.Bits.FiniteBits a => Data.Bits.FiniteBits (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance Data.Bits.FiniteBits a => Data.Bits.FiniteBits (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance Data.Copointed.Copointed (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Copointed.Copointed NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Default.Class.Default a => Data.Default.Class.Default (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance Data.Default.Class.Default a => Data.Default.Class.Default (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance Data.Foldable.Foldable (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Foldable.Foldable NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Functor.Classes.Eq1 (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Functor.Classes.Eq1 NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Functor.Classes.Ord1 (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Functor.Classes.Ord1 NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Functor.Classes.Read1 (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Functor.Classes.Read1 NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Functor.Classes.Show1 (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Functor.Classes.Show1 NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.Pointed.Pointed (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Pointed.Pointed NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance Data.String.IsString a => Data.String.IsString (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance Data.String.IsString a => Data.String.IsString (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance Data.Traversable.Traversable (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance Data.Traversable.Traversable NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance GHC.Arr.Ix a => GHC.Arr.Ix (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Arr.Ix a => GHC.Arr.Ix (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Base.Applicative (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance GHC.Base.Applicative NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance GHC.Base.Functor (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance GHC.Base.Functor NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance GHC.Base.Monad (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance GHC.Base.Monad NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance GHC.Base.Monoid a => GHC.Base.Monoid (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Base.Monoid a => GHC.Base.Monoid (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Classes.Eq a => GHC.Classes.Eq (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Classes.Eq a => GHC.Classes.Eq (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Classes.Ord a => GHC.Classes.Ord (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Classes.Ord a => GHC.Classes.Ord (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Enum.Bounded a => GHC.Enum.Bounded (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Enum.Bounded a => GHC.Enum.Bounded (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Enum.Enum a => GHC.Enum.Enum (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Enum.Enum a => GHC.Enum.Enum (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Float.Floating a => GHC.Float.Floating (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Float.Floating a => GHC.Float.Floating (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Float.RealFloat a => GHC.Float.RealFloat (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Float.RealFloat a => GHC.Float.RealFloat (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Generics.Generic (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Generics.Generic (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Generics.Generic1 (NewtypeZoo.Available.AvailableIn ctx)
+ NewtypeZoo.Available: instance GHC.Generics.Generic1 NewtypeZoo.Available.Available
+ NewtypeZoo.Available: instance GHC.Num.Num a => GHC.Num.Num (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Num.Num a => GHC.Num.Num (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Read.Read a => GHC.Read.Read (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Read.Read a => GHC.Read.Read (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Real.Fractional a => GHC.Real.Fractional (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Real.Fractional a => GHC.Real.Fractional (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Real.Integral a => GHC.Real.Integral (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Real.Integral a => GHC.Real.Integral (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Real.Real a => GHC.Real.Real (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Real.Real a => GHC.Real.Real (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance GHC.Show.Show a => GHC.Show.Show (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance GHC.Show.Show a => GHC.Show.Show (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance System.Random.Random a => System.Random.Random (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance System.Random.Random a => System.Random.Random (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NewtypeZoo.Available.Available a)
+ NewtypeZoo.Available: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NewtypeZoo.Available.AvailableIn ctx a)
+ NewtypeZoo.Available: newtype Available a
+ NewtypeZoo.Available: newtype AvailableIn ctx a
+ NewtypeZoo.Available: theAvailable :: forall a b p f. (Profunctor p, Functor f) => p a (f b) -> p (Available a) (f (Available b))
+ NewtypeZoo.Available: theAvailableIn :: forall ctx a b p f. (Profunctor p, Functor f) => p a (f b) -> p (AvailableIn ctx a) (f (AvailableIn ctx b))
+ NewtypeZoo.Broken: instance Control.Comonad.Comonad NewtypeZoo.Broken.Broken
+ NewtypeZoo.Cached: instance Control.Comonad.Comonad NewtypeZoo.Cached.Cached
+ NewtypeZoo.Complete: instance Control.Comonad.Comonad NewtypeZoo.Complete.Complete
+ NewtypeZoo.Consistent: ConsistentTo :: a -> ConsistentTo ctx a
+ NewtypeZoo.Consistent: _theConsistentTo :: ConsistentTo ctx x -> x
+ NewtypeZoo.Consistent: instance Control.Comonad.Comonad (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Control.Comonad.Comonad NewtypeZoo.Consistent.Consistent
+ NewtypeZoo.Consistent: instance Control.DeepSeq.NFData a => Control.DeepSeq.NFData (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance Control.Monad.Fix.MonadFix (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Control.Monad.Zip.MonadZip (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Bits.Bits a => Data.Bits.Bits (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance Data.Bits.FiniteBits a => Data.Bits.FiniteBits (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance Data.Copointed.Copointed (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Default.Class.Default a => Data.Default.Class.Default (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance Data.Foldable.Foldable (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Functor.Classes.Eq1 (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Functor.Classes.Ord1 (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Functor.Classes.Read1 (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Functor.Classes.Show1 (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.Pointed.Pointed (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance Data.String.IsString a => Data.String.IsString (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance Data.Traversable.Traversable (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance GHC.Arr.Ix a => GHC.Arr.Ix (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Base.Applicative (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance GHC.Base.Functor (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance GHC.Base.Monad (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance GHC.Base.Monoid a => GHC.Base.Monoid (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Classes.Eq a => GHC.Classes.Eq (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Classes.Ord a => GHC.Classes.Ord (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Enum.Bounded a => GHC.Enum.Bounded (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Enum.Enum a => GHC.Enum.Enum (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Float.Floating a => GHC.Float.Floating (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Float.RealFloat a => GHC.Float.RealFloat (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Generics.Generic (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Generics.Generic1 (NewtypeZoo.Consistent.ConsistentTo ctx)
+ NewtypeZoo.Consistent: instance GHC.Num.Num a => GHC.Num.Num (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Read.Read a => GHC.Read.Read (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Real.Fractional a => GHC.Real.Fractional (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Real.Integral a => GHC.Real.Integral (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Real.Real a => GHC.Real.Real (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Real.RealFrac a => GHC.Real.RealFrac (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance GHC.Show.Show a => GHC.Show.Show (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance System.Random.Random a => System.Random.Random (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: instance Test.QuickCheck.Arbitrary.Arbitrary a => Test.QuickCheck.Arbitrary.Arbitrary (NewtypeZoo.Consistent.ConsistentTo ctx a)
+ NewtypeZoo.Consistent: newtype ConsistentTo ctx a
+ NewtypeZoo.Consistent: theConsistentTo :: forall ctx a b p f. (Profunctor p, Functor f) => p a (f b) -> p (ConsistentTo ctx a) (f (ConsistentTo ctx b))

Files

CHANGELOG.md view
@@ -1,5 +1,14 @@ # Revision history for newtype-zoo +## 1.2.0.0 -- 2019-09-27++* Add `Available`+* Add experimental two-parameter newtype wrappers:+  * `AvailableIn`+  * `ConsistentTo`+* Add comonad instances to a few wrappers. If this proves valuable,+  all type will get instances in a future release.+ ## 1.1.0.0 -- 2019-09-19  * Add module `NewtypeZoo` which exports all reexports all wrappers.
newtype-zoo.cabal view
@@ -13,7 +13,7 @@ -- PVP summary:      +-+------- breaking API changes --                   | | +----- non-breaking API additions --                   | | | +--- code changes with no API change-version:             1.1.0.0+version:             1.2.0.0  -- A short (one-line) description of the package. synopsis:            Newtype Wrapper Zoo@@ -56,6 +56,7 @@       NewtypeZoo     , NewtypeZoo.Active     , NewtypeZoo.Allocated+    , NewtypeZoo.Available     , NewtypeZoo.Broken     , NewtypeZoo.Cached     , NewtypeZoo.Complete@@ -115,6 +116,7 @@   -- Other library packages from which modules are imported.   build-depends:       base ^>=4.12.0.0+    , comonad     , data-default     , deepseq     , pointed
src/NewtypeZoo.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE TypeOperators #-} -- | General Purpose Newtype Wrappers -- -- A zoo of /newtype/ wrappers.@@ -60,5 +62,6 @@ import NewtypeZoo.Complete as X import NewtypeZoo.Cached as X import NewtypeZoo.Broken as X+import NewtypeZoo.Available as X import NewtypeZoo.Allocated as X import NewtypeZoo.Active as X
src/NewtypeZoo/Active.hs view
@@ -5,6 +5,7 @@   , theActive   ) where +import           Control.Comonad (Comonad) import           Control.DeepSeq (NFData) import           Control.Monad.Fix (MonadFix) import           Control.Monad.Zip (MonadZip)@@ -23,6 +24,7 @@ import           System.Random   (Random) import           Test.QuickCheck (Arbitrary) +-- | A wrapper for something that is `Active`. newtype Active a = Active a   deriving ( Eq            , Ord@@ -64,14 +66,16 @@            , MonadFix            , Monad            , MonadZip-+           , Comonad            )            via Identity +-- | An accessor function for something 'Active'. _theActive :: Active x -> x _theActive (Active !x) = x {-# INLINE _theActive #-} +-- | A lens for something 'Active'. theActive :: forall a b p f. (Profunctor p, Functor f) => p a (f b) -> p (Active a) (f (Active b)) theActive = dimap _theActive (fmap Active) {-# INLINE theActive #-}
src/NewtypeZoo/Allocated.hs view
@@ -5,6 +5,7 @@   , theAllocated   ) where +import           Control.Comonad (Comonad) import           Control.DeepSeq (NFData) import           Control.Monad.Fix (MonadFix) import           Control.Monad.Zip (MonadZip)@@ -23,6 +24,7 @@ import           System.Random   (Random) import           Test.QuickCheck (Arbitrary) +-- | A wrapper for something that is `Allocated`. newtype Allocated a = Allocated a   deriving ( Eq            , Ord@@ -64,14 +66,16 @@            , MonadFix            , Monad            , MonadZip-+           , Comonad            )            via Identity +-- | An accessor function for something 'Allocated'. _theAllocated :: Allocated x -> x _theAllocated (Allocated !x) = x {-# INLINE _theAllocated #-} +-- | A lens for something 'Allocated'. theAllocated :: forall a b p f. (Profunctor p, Functor f) => p a (f b) -> p (Allocated a) (f (Allocated b)) theAllocated = dimap _theAllocated (fmap Allocated) {-# INLINE theAllocated #-}
+ src/NewtypeZoo/Available.hs view
@@ -0,0 +1,141 @@+-- | Indicate that something is `Available`.+module NewtypeZoo.Available+  ( Available(Available)+  , _theAvailable+  , theAvailable+  , AvailableIn(AvailableIn)+  , _theAvailableIn+  , theAvailableIn+  ) where++import           Control.Comonad (Comonad)+import           Control.DeepSeq (NFData)+import           Control.Monad.Fix (MonadFix)+import           Control.Monad.Zip (MonadZip)+import           Data.Bits       (Bits,FiniteBits)+import           Data.Copointed  (Copointed)+import           Data.Default    (Default)+import           Data.Functor.Classes (Eq1, Ord1, Read1, Show1)+import           Data.Functor.Identity+import           Data.Ix         (Ix)+import           Data.Profunctor (Profunctor, dimap)+import           Data.Pointed    (Pointed)+import           Data.String     (IsString)+import           Data.Typeable   (Typeable)+import           Foreign.Storable (Storable)+import           GHC.Generics    (Generic, Generic1)+import           System.Random   (Random)+import           Test.QuickCheck (Arbitrary)++-- | A wrapper for something that is `Available`.+newtype Available a = Available a+  deriving ( Eq+           , Ord+           , Read+           , Show+           , NFData+           , Foldable+           , Traversable+           , Functor+           , Default+           , Monoid+           , Semigroup+           , Typeable+           , Generic+           , Generic1+           , Random+           , Arbitrary+           , Bounded+           , Enum+           , Floating+           , Fractional+           , Integral+           , Num+           , Real+           , RealFloat+           , RealFrac+           , Ix+           , IsString+           , Bits+           , FiniteBits+           )+  deriving ( Eq1+           , Ord1+           , Read1+           , Show1+           , Pointed+           , Copointed+           , Applicative+           , MonadFix+           , Monad+           , MonadZip+           , Comonad+           )+           via Identity++-- | An accessor function for something 'Available'.+_theAvailable :: Available x -> x+_theAvailable (Available !x) = x+{-# INLINE _theAvailable #-}++-- | A lens for something 'Available'.+theAvailable :: forall a b p f. (Profunctor p, Functor f) => p a (f b) -> p (Available a) (f (Available b))+theAvailable = dimap _theAvailable (fmap Available)+{-# INLINE theAvailable #-}++-- | A wrapper for something that is `AvailableIn` with respect to some context+-- indicated by a (phantom-) type.+newtype AvailableIn ctx a = AvailableIn a+  deriving ( Eq+           , Ord+           , Read+           , Show+           , NFData+           , Foldable+           , Traversable+           , Functor+           , Default+           , Monoid+           , Semigroup+           , Typeable+           , Generic+           , Generic1+           , Random+           , Arbitrary+           , Bounded+           , Enum+           , Floating+           , Fractional+           , Integral+           , Num+           , Real+           , RealFloat+           , RealFrac+           , Ix+           , IsString+           , Bits+           , FiniteBits+           )+  deriving ( Eq1+           , Ord1+           , Read1+           , Show1+           , Pointed+           , Copointed+           , Applicative+           , MonadFix+           , Monad+           , MonadZip+           , Comonad+           )+           via Identity++-- | An accessor function for something 'AvailableIn'.+_theAvailableIn :: AvailableIn ctx x -> x+_theAvailableIn (AvailableIn !x) = x+{-# INLINE _theAvailableIn #-}++-- | A lens for something 'AvailableIn'.+theAvailableIn :: forall ctx a b p f. (Profunctor p, Functor f) => p a (f b) -> p (AvailableIn ctx a) (f (AvailableIn ctx b))+theAvailableIn = dimap _theAvailableIn (fmap AvailableIn)+{-# INLINE theAvailableIn #-}
src/NewtypeZoo/Broken.hs view
@@ -5,6 +5,7 @@   , theBroken   ) where +import           Control.Comonad (Comonad) import           Control.DeepSeq (NFData) import           Control.Monad.Fix (MonadFix) import           Control.Monad.Zip (MonadZip)@@ -23,6 +24,7 @@ import           System.Random   (Random) import           Test.QuickCheck (Arbitrary) +-- | A wrapper for something that is `Broken`. newtype Broken a = Broken a   deriving ( Eq            , Ord@@ -64,14 +66,16 @@            , MonadFix            , Monad            , MonadZip-+           , Comonad            )            via Identity +-- | An accessor function for something 'Broken'. _theBroken :: Broken x -> x _theBroken (Broken !x) = x {-# INLINE _theBroken #-} +-- | A lens for something 'Broken'. theBroken :: forall a b p f. (Profunctor p, Functor f) => p a (f b) -> p (Broken a) (f (Broken b)) theBroken = dimap _theBroken (fmap Broken) {-# INLINE theBroken #-}
src/NewtypeZoo/Cached.hs view
@@ -5,6 +5,7 @@   , theCached   ) where +import           Control.Comonad (Comonad) import           Control.DeepSeq (NFData) import           Control.Monad.Fix (MonadFix) import           Control.Monad.Zip (MonadZip)@@ -64,7 +65,7 @@            , MonadFix            , Monad            , MonadZip-+           , Comonad            )            via Identity 
src/NewtypeZoo/Complete.hs view
@@ -5,6 +5,7 @@   , theComplete   ) where +import           Control.Comonad (Comonad) import           Control.DeepSeq (NFData) import           Control.Monad.Fix (MonadFix) import           Control.Monad.Zip (MonadZip)@@ -64,7 +65,7 @@            , MonadFix            , Monad            , MonadZip-+           , Comonad            )            via Identity 
src/NewtypeZoo/Consistent.hs view
@@ -3,8 +3,12 @@   ( Consistent(Consistent)   , _theConsistent   , theConsistent+  , ConsistentTo(ConsistentTo)+  , _theConsistentTo+  , theConsistentTo   ) where +import           Control.Comonad (Comonad) import           Control.DeepSeq (NFData) import           Control.Monad.Fix (MonadFix) import           Control.Monad.Zip (MonadZip)@@ -23,6 +27,7 @@ import           System.Random   (Random) import           Test.QuickCheck (Arbitrary) +-- | A wrapper for something that is `Consistent`. newtype Consistent a = Consistent a   deriving ( Eq            , Ord@@ -64,14 +69,74 @@            , MonadFix            , Monad            , MonadZip-+           , Comonad            )            via Identity +-- | An accessor function for something 'Consistent'. _theConsistent :: Consistent x -> x _theConsistent (Consistent !x) = x {-# INLINE _theConsistent #-} +-- | A lens for something 'Consistent'. theConsistent :: forall a b p f. (Profunctor p, Functor f) => p a (f b) -> p (Consistent a) (f (Consistent b)) theConsistent = dimap _theConsistent (fmap Consistent) {-# INLINE theConsistent #-}+++-- | A wrapper for something that is `ConsistentTo` some context+-- indicated by a (phantom-) type.+newtype ConsistentTo ctx a = ConsistentTo a+  deriving ( Eq+           , Ord+           , Read+           , Show+           , NFData+           , Foldable+           , Traversable+           , Functor+           , Default+           , Monoid+           , Semigroup+           , Typeable+           , Generic+           , Generic1+           , Random+           , Arbitrary+           , Bounded+           , Enum+           , Floating+           , Fractional+           , Integral+           , Num+           , Real+           , RealFloat+           , RealFrac+           , Ix+           , IsString+           , Bits+           , FiniteBits+           )+  deriving ( Eq1+           , Ord1+           , Read1+           , Show1+           , Pointed+           , Copointed+           , Applicative+           , MonadFix+           , Monad+           , MonadZip+           , Comonad+           )+           via Identity++-- | An accessor function for something 'ConsistentTo'.+_theConsistentTo :: ConsistentTo ctx x -> x+_theConsistentTo (ConsistentTo !x) = x+{-# INLINE _theConsistentTo #-}++-- | A lens for something 'ConsistentTo'.+theConsistentTo :: forall ctx a b p f. (Profunctor p, Functor f) => p a (f b) -> p (ConsistentTo ctx a) (f (ConsistentTo ctx b))+theConsistentTo = dimap _theConsistentTo (fmap ConsistentTo)+{-# INLINE theConsistentTo #-}