id 0.0.2 → 0.0.3
raw patch · 3 files changed
+199/−6 lines, 3 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
+ Data.Id: __Unwrapped :: forall f1 a f' a' p f2. (Profunctor p, Functor f2) => p (Id f1 a) (f2 (Id f' a')) -> p (f1 a) (f2 (f' a'))
+ Data.Id: instance Data.Id.AsId (Data.Either.Either e a) (Data.Either.Either e) a
+ Data.Id: instance Data.Id.AsId (Data.Functor.Const.Const c a) (Data.Functor.Const.Const c) a
+ Data.Id: instance Data.Id.AsId (Data.Functor.Identity.Identity a) Data.Functor.Identity.Identity a
+ Data.Id: instance Data.Id.AsId (Data.Proxy.Proxy a) Data.Proxy.Proxy a
+ Data.Id: instance Data.Id.AsId (Data.Tagged.Tagged s a) (Data.Tagged.Tagged s) a
+ Data.Id: instance Data.Id.AsId (GHC.Base.NonEmpty a) GHC.Base.NonEmpty a
+ Data.Id: instance Data.Id.AsId (GHC.Maybe.Maybe a) GHC.Maybe.Maybe a
+ Data.Id: instance Data.Id.AsId (w, a) ((,) w) a
+ Data.Id: instance Data.Id.AsId [a] [] a
+ Data.Id: instance Data.Id.GetterId (Data.Either.Either e a) (Data.Either.Either e) a
+ Data.Id: instance Data.Id.GetterId (Data.Functor.Const.Const c a) (Data.Functor.Const.Const c) a
+ Data.Id: instance Data.Id.GetterId (Data.Functor.Identity.Identity a) Data.Functor.Identity.Identity a
+ Data.Id: instance Data.Id.GetterId (Data.Proxy.Proxy a) Data.Proxy.Proxy a
+ Data.Id: instance Data.Id.GetterId (Data.Tagged.Tagged s a) (Data.Tagged.Tagged s) a
+ Data.Id: instance Data.Id.GetterId (GHC.Base.NonEmpty a) GHC.Base.NonEmpty a
+ Data.Id: instance Data.Id.GetterId (GHC.Maybe.Maybe a) GHC.Maybe.Maybe a
+ Data.Id: instance Data.Id.GetterId (w, a) ((,) w) a
+ Data.Id: instance Data.Id.GetterId [a] [] a
+ Data.Id: instance Data.Id.HasId (Data.Either.Either e a) (Data.Either.Either e) a
+ Data.Id: instance Data.Id.HasId (Data.Functor.Const.Const c a) (Data.Functor.Const.Const c) a
+ Data.Id: instance Data.Id.HasId (Data.Functor.Identity.Identity a) Data.Functor.Identity.Identity a
+ Data.Id: instance Data.Id.HasId (Data.Proxy.Proxy a) Data.Proxy.Proxy a
+ Data.Id: instance Data.Id.HasId (Data.Tagged.Tagged s a) (Data.Tagged.Tagged s) a
+ Data.Id: instance Data.Id.HasId (GHC.Base.NonEmpty a) GHC.Base.NonEmpty a
+ Data.Id: instance Data.Id.HasId (GHC.Maybe.Maybe a) GHC.Maybe.Maybe a
+ Data.Id: instance Data.Id.HasId (w, a) ((,) w) a
+ Data.Id: instance Data.Id.HasId [a] [] a
+ Data.Id: instance Data.Id.ReviewId (Data.Either.Either e a) (Data.Either.Either e) a
+ Data.Id: instance Data.Id.ReviewId (Data.Functor.Const.Const c a) (Data.Functor.Const.Const c) a
+ Data.Id: instance Data.Id.ReviewId (Data.Functor.Identity.Identity a) Data.Functor.Identity.Identity a
+ Data.Id: instance Data.Id.ReviewId (Data.Proxy.Proxy a) Data.Proxy.Proxy a
+ Data.Id: instance Data.Id.ReviewId (Data.Tagged.Tagged s a) (Data.Tagged.Tagged s) a
+ Data.Id: instance Data.Id.ReviewId (GHC.Base.NonEmpty a) GHC.Base.NonEmpty a
+ Data.Id: instance Data.Id.ReviewId (GHC.Maybe.Maybe a) GHC.Maybe.Maybe a
+ Data.Id: instance Data.Id.ReviewId (w, a) ((,) w) a
+ Data.Id: instance Data.Id.ReviewId [a] [] a
- Data.Id: reviewId :: ReviewId a f x => Review a (f x)
+ Data.Id: reviewId :: ReviewId a f x => Review a (Id f x)
Files
- changelog.md +6/−0
- id.cabal +1/−1
- src/Data/Id.hs +192/−5
changelog.md view
@@ -1,3 +1,9 @@+0.0.3++* Add __Unwrapped iso (dual of __Wrapped) with specializations for all type aliases+* Change ReviewId target from (f x) to (Id f x)+* Add GetterId, HasId, ReviewId, AsId instances for canonical functors: Identity, Maybe, [], NonEmpty, Either e, (,) w, Const c, Proxy, Tagged s+ 0.0.2 * Add type classes: GetterId, HasId, ReviewId, AsId
id.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.4 name: id-version: 0.0.2+version: 0.0.3 synopsis: Id (f a) data type description: (f a) data type, with optics and functions for switching the type constructor (f) license: BSD-3-Clause
src/Data/Id.hs view
@@ -46,6 +46,7 @@ -- * Optics __Wrapped,+ __Unwrapped, idTagged, idProxy, just,@@ -74,6 +75,7 @@ prism', re, review,+ to, unto, view, _Just,@@ -255,6 +257,47 @@ Id -- |+-- >>> view __Unwrapped [1,2,3] :: Id [] Int+-- Id [1,2,3]+--+-- >>> view (from __Unwrapped) (Id [1,2,3])+-- [1,2,3]+--+-- >>> over __Unwrapped (mapId (fmap (+1))) [1,2,3] :: [Int]+-- [2,3,4]+{-# SPECIALIZE __Unwrapped ::+ Iso (Maybe a) (Maybe a') (IdMaybe a) (IdMaybe a')+ #-}+{-# SPECIALIZE __Unwrapped ::+ Iso (Identity a) (Identity a') (IdIdentity a) (IdIdentity a')+ #-}+{-# SPECIALIZE __Unwrapped ::+ Iso (Either e a) (Either e' a') (IdEither e a) (IdEither e' a')+ #-}+{-# SPECIALIZE __Unwrapped ::+ Iso (w, a) (w', a') (IdWriter w a) (IdWriter w' a')+ #-}+{-# SPECIALIZE __Unwrapped ::+ Iso [a] [a'] (IdList a) (IdList a')+ #-}+{-# SPECIALIZE __Unwrapped ::+ Iso (NonEmpty a) (NonEmpty a') (IdNonEmpty a) (IdNonEmpty a')+ #-}+{-# SPECIALIZE __Unwrapped ::+ Iso (Const c a) (Const c' a') (IdConst c a) (IdConst c' a')+ #-}+__Unwrapped ::+ Iso+ (f a)+ (f' a')+ (Id f a)+ (Id f' a')+__Unwrapped =+ iso+ Id+ (\(Id x) -> x)++-- | -- >>> unId (Id [1,2,3]) -- [1,2,3] --@@ -289,6 +332,42 @@ getId = id +instance GetterId (Identity a) Identity a where+ getId =+ to Id++instance GetterId (Maybe a) Maybe a where+ getId =+ to Id++instance GetterId [a] [] a where+ getId =+ to Id++instance GetterId (NonEmpty a) NonEmpty a where+ getId =+ to Id++instance GetterId (Either e a) (Either e) a where+ getId =+ to Id++instance GetterId (w, a) ((,) w) a where+ getId =+ to Id++instance GetterId (Const c a) (Const c) a where+ getId =+ to Id++instance GetterId (Proxy a) Proxy a where+ getId =+ to Id++instance GetterId (Tagged s a) (Tagged s) a where+ getId =+ to Id+ -- | -- >>> view id' (Id [1,2,3]) -- Id [1,2,3]@@ -308,20 +387,92 @@ setId = const +instance HasId (Identity a) Identity a where+ setId =+ const . unId++instance HasId (Maybe a) Maybe a where+ setId =+ const . unId++instance HasId [a] [] a where+ setId =+ const . unId++instance HasId (NonEmpty a) NonEmpty a where+ setId =+ const . unId++instance HasId (Either e a) (Either e) a where+ setId =+ const . unId++instance HasId (w, a) ((,) w) a where+ setId =+ const . unId++instance HasId (Const c a) (Const c) a where+ setId =+ const . unId++instance HasId (Proxy a) Proxy a where+ setId =+ const . unId++instance HasId (Tagged s a) (Tagged s) a where+ setId =+ const . unId+ -- |--- >>> review reviewId [1,2,3] :: Id [] Int+-- >>> review reviewId (Id [1,2,3]) :: Id [] Int -- Id [1,2,3] ----- >>> review reviewId (Identity 7) :: IdIdentity Int+-- >>> review reviewId (Id (Identity 7)) :: IdIdentity Int -- Id (Identity 7) class ReviewId a f x | a -> f x where reviewId ::- Review a (f x)+ Review a (Id f x) instance ReviewId (Id f a) f a where reviewId =- unto Id+ unto id +instance ReviewId (Identity a) Identity a where+ reviewId =+ unto unId++instance ReviewId (Maybe a) Maybe a where+ reviewId =+ unto unId++instance ReviewId [a] [] a where+ reviewId =+ unto unId++instance ReviewId (NonEmpty a) NonEmpty a where+ reviewId =+ unto unId++instance ReviewId (Either e a) (Either e) a where+ reviewId =+ unto unId++instance ReviewId (w, a) ((,) w) a where+ reviewId =+ unto unId++instance ReviewId (Const c a) (Const c) a where+ reviewId =+ unto unId++instance ReviewId (Proxy a) Proxy a where+ reviewId =+ unto unId++instance ReviewId (Tagged s a) (Tagged s) a where+ reviewId =+ unto unId+ -- | -- >>> preview _Id (Id [1,2,3]) -- Just (Id [1,2,3])@@ -335,11 +486,47 @@ _Id :: Prism' a (Id f x) _Id =- prism' (review reviewId . unId) matchId+ prism' (review reviewId) matchId instance AsId (Id f a) f a where matchId = Just++instance AsId (Identity a) Identity a where+ matchId =+ Just . Id++instance AsId (Maybe a) Maybe a where+ matchId =+ Just . Id++instance AsId [a] [] a where+ matchId =+ Just . Id++instance AsId (NonEmpty a) NonEmpty a where+ matchId =+ Just . Id++instance AsId (Either e a) (Either e) a where+ matchId =+ Just . Id++instance AsId (w, a) ((,) w) a where+ matchId =+ Just . Id++instance AsId (Const c a) (Const c) a where+ matchId =+ Just . Id++instance AsId (Proxy a) Proxy a where+ matchId =+ Just . Id++instance AsId (Tagged s a) (Tagged s) a where+ matchId =+ Just . Id -- | -- >>> Id [1,2,3] <> Id [4,5]