polysemy-optics 0.1.0.1 → 0.1.0.2
raw patch · 2 files changed
+13/−9 lines, 2 filesdep ~basedep ~opticsdep ~polysemyPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: base, optics, polysemy, polysemy-zoo
API changes (from Hackage documentation)
+ Optics.Polysemy: (%?) :: forall (is :: IxList) (js :: IxList) (ks :: IxList) k k' l m s t u v a b. (AppendIndices is js ks, JoinKinds k A_Prism k', JoinKinds k' l m) => Optic k is s t (Maybe u) (Maybe v) -> Optic l js u v a b -> Optic m ks s t a b
+ Optics.Polysemy: adjoin :: forall k l (is :: IxList) s a (js :: IxList). (Is k A_Traversal, Is l A_Traversal) => Optic' k is s a -> Optic' l js s a -> Traversal' s a
+ Optics.Polysemy: both :: Bitraversable r => Traversal (r a a) (r b b) a b
+ Optics.Polysemy: class AppendIndices (xs :: IxList) (ys :: IxList) (ks :: IxList) | xs ys -> ks
+ Optics.Polysemy: class GAffineField (name :: Symbol) s t a b | name s -> t a b, name t -> s a b
+ Optics.Polysemy: class GConstructor (name :: Symbol) s t a b | name s -> t a b, name t -> s a b
+ Optics.Polysemy: class GField (name :: Symbol) s t a b | name s -> t a b, name t -> s a b
+ Optics.Polysemy: class GPlate a s
+ Optics.Polysemy: class GPosition (n :: Nat) s t a b | n s -> t a b, n t -> s a b
+ Optics.Polysemy: class Generic a => GenericLabelOptics a where {
+ Optics.Polysemy: class JoinKinds k l m | k l -> m
+ Optics.Polysemy: composeN :: CurryCompose xs => (i -> j) -> Curry xs i -> Curry xs j
+ Optics.Polysemy: cosmosOf :: forall k (is :: IxList) a. Is k A_Fold => Optic' k is a a -> Fold a a
+ Optics.Polysemy: gafield :: GAffineField name s t a b => AffineTraversal s t a b
+ Optics.Polysemy: gconstructor :: GConstructor name s t a b => Prism s t a b
+ Optics.Polysemy: gfield :: GField name s t a b => Lens s t a b
+ Optics.Polysemy: gplate :: GPlate a s => Traversal' s a
+ Optics.Polysemy: gposition :: GPosition n s t a b => Lens s t a b
+ Optics.Polysemy: iadjoin :: forall k l (is :: IxList) i s a. (Is k A_Traversal, Is l A_Traversal, HasSingleIndex is i) => Optic' k is s a -> Optic' l is s a -> IxTraversal' i s a
+ Optics.Polysemy: ifoldMap' :: (FoldableWithIndex i f, Monoid m) => (i -> a -> m) -> f a -> m
+ Optics.Polysemy: ifoldl :: FoldableWithIndex i f => (i -> b -> a -> b) -> b -> f a -> b
+ Optics.Polysemy: ifoldr' :: FoldableWithIndex i f => (i -> a -> b -> b) -> b -> f a -> b
+ Optics.Polysemy: ifst :: IxLens i (a, i) (b, i) a b
+ Optics.Polysemy: isnd :: IxLens i (i, a) (i, b) a b
+ Optics.Polysemy: makeFieldLabelsNoPrefix :: Name -> DecsQ
+ Optics.Polysemy: paraOf :: forall k (is :: IxList) a r. Is k A_Fold => Optic' k is a a -> (a -> [r] -> r) -> a -> r
+ Optics.Polysemy: rewriteMOf :: forall k m (is :: IxList) a b. (Is k A_Traversal, Monad m) => Optic k is a b a b -> (b -> m (Maybe a)) -> a -> m b
+ Optics.Polysemy: rewriteOf :: forall k (is :: IxList) a b. Is k A_Setter => Optic k is a b a b -> (b -> Maybe a) -> a -> b
+ Optics.Polysemy: transformMOf :: forall k m (is :: IxList) a b. (Is k A_Traversal, Monad m) => Optic k is a b a b -> (b -> m b) -> a -> m b
+ Optics.Polysemy: transformOf :: forall k (is :: IxList) a b. Is k A_Setter => Optic k is a b a b -> (b -> b) -> a -> b
+ Optics.Polysemy: type HasGenericLabelOptics a = 'True;
+ Optics.Polysemy: universeOf :: forall k (is :: IxList) a. Is k A_Fold => Optic' k is a a -> a -> [a]
- Optics.Polysemy: (%%) :: forall k (is :: [Type]) (js :: [Type]) (ks :: [Type]) s t u v a b. ks ~ Append is js => Optic k is s t u v -> Optic k js u v a b -> Optic k ks s t a b
+ Optics.Polysemy: (%%) :: forall k (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. AppendIndices is js ks => Optic k is s t u v -> Optic k js u v a b -> Optic k ks s t a b
- Optics.Polysemy: (%) :: forall k m l (ks :: [Type]) (is :: [Type]) (js :: [Type]) s t u v a b. (Is k m, Is l m, m ~ Join k l, ks ~ Append is js) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
+ Optics.Polysemy: (%) :: forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
- Optics.Polysemy: (%>) :: forall m k l s t u v (is :: IxList) (js :: IxList) a b. (m ~ Join k l, Is k m, Is l m, IxOptic k s t u v, NonEmptyIndices is) => Optic k is s t u v -> Optic l js u v a b -> Optic m js s t a b
+ Optics.Polysemy: (%>) :: forall k l m s t u v (is :: IxList) (js :: IxList) a b. (JoinKinds k l m, IxOptic k s t u v, NonEmptyIndices is) => Optic k is s t u v -> Optic l js u v a b -> Optic m js s t a b
- Optics.Polysemy: (<%) :: forall m k l u v a b (js :: IxList) (is :: IxList) s t. (m ~ Join k l, Is l m, Is k m, IxOptic l u v a b, NonEmptyIndices js) => Optic k is s t u v -> Optic l js u v a b -> Optic m is s t a b
+ Optics.Polysemy: (<%) :: forall k l m u v a b (js :: IxList) (is :: IxList) s t. (JoinKinds k l m, IxOptic l u v a b, NonEmptyIndices js) => Optic k is s t u v -> Optic l js u v a b -> Optic m is s t a b
- Optics.Polysemy: (<%>) :: forall m k l s t a b (is :: IxList) i (js :: IxList) j u v. (m ~ Join k l, Is k m, Is l m, IxOptic m s t a b, HasSingleIndex is i, HasSingleIndex js j) => Optic k is s t u v -> Optic l js u v a b -> Optic m (WithIx (i, j)) s t a b
+ Optics.Polysemy: (<%>) :: forall k l m s t a b (is :: IxList) i (js :: IxList) j u v. (JoinKinds k l m, IxOptic m s t a b, HasSingleIndex is i, HasSingleIndex js j) => Optic k is s t u v -> Optic l js u v a b -> Optic m (WithIx (i, j)) s t a b
- Optics.Polysemy: chosen :: Lens (Either a a) (Either b b) a b
+ Optics.Polysemy: chosen :: IxLens (Either () ()) (Either a a) (Either b b) a b
- Optics.Polysemy: class (FunctorWithIndex i f, Foldable f) => FoldableWithIndex i (f :: Type -> Type) | f -> i
+ Optics.Polysemy: class Foldable f => FoldableWithIndex i (f :: Type -> Type) | f -> i
- Optics.Polysemy: class ToReadOnly k s t a b
+ Optics.Polysemy: class ToReadOnly k s t a b where {
- Optics.Polysemy: class (FoldableWithIndex i t, Traversable t) => TraversableWithIndex i (t :: Type -> Type) | t -> i
+ Optics.Polysemy: class (FunctorWithIndex i t, FoldableWithIndex i t, Traversable t) => TraversableWithIndex i (t :: Type -> Type) | t -> i
- Optics.Polysemy: getting :: forall (is :: IxList). ToReadOnly k s t a b => Optic k is s t a b -> Optic' (Join A_Getter k) is s a
+ Optics.Polysemy: getting :: forall (is :: IxList). ToReadOnly k s t a b => Optic k is s t a b -> Optic' (ReadOnlyOptic k) is s a
- Optics.Polysemy: infixr 6 `isumming`
+ Optics.Polysemy: infixr 6 `iadjoin`
- Optics.Polysemy: type family Index s
+ Optics.Polysemy: type family HasGenericLabelOptics a :: Bool
Files
polysemy-optics.cabal view
@@ -1,7 +1,7 @@ cabal-version: 1.22 name: polysemy-optics-version: 0.1.0.1+version: 0.1.0.2 synopsis: Optics for Polysemy. description: Optics for interfacing with Reader, State, and Writer effects in Polysemy.@@ -10,7 +10,7 @@ license-file: LICENSE author: Nicholas Coltharp maintainer: coltharp@pdx.edu-copyright: 2020 Nicholas Coltharp+copyright: 2022 Nicholas Coltharp category: Optics, Lenses build-type: Simple extra-source-files: CHANGELOG.md@@ -23,10 +23,10 @@ , Optics.Polysemy.Writer reexported-modules: Optics , Optics.State.Operators- build-depends: base >=4.12 && <4.15- , optics >=0.1 && <0.4- , polysemy >=0.4 && <1.5- , polysemy-zoo >=0.6 && <0.8+ build-depends: base >=4.12 && <4.17+ , optics >=0.1 && <0.5+ , polysemy >=0.4 && <1.8+ , polysemy-zoo >=0.6 && <0.9 hs-source-dirs: src default-language: Haskell2010 default-extensions: BlockArguments
src/Optics/Polysemy/State.hs view
@@ -23,6 +23,10 @@ , zoomMaybe ) where +import Data.Maybe+ ( fromMaybe+ )+ import Optics ( A_Getter , A_Lens@@ -138,9 +142,9 @@ zoomMaybe :: (Is k An_AffineTraversal, Member (State s) effs) => Optic' k is s a -> Sem (State a ': effs) c -> Sem effs (Maybe c) zoomMaybe o m = preuse o' >>= traverse \a ->- ( interpret \case- Get -> maybe a id <$> preuse o'+ interpret \case+ Get -> fromMaybe a <$> preuse o' Put a' -> assign o' a'- ) m+ m where o' = castOptic @An_AffineTraversal o {-# INLINE zoomMaybe #-}