lens-4.15.4: Lenses, Folds and Traversals

Copyright(C) 2012-16 Edward Kmett Michael Sloan
LicenseBSD-style (see the file LICENSE)
MaintainerEdward Kmett <ekmett@gmail.com>
Stabilityexperimental
PortabilityRank2, MPTCs, fundeps
Safe HaskellTrustworthy
LanguageHaskell98

Control.Lens.Wrapped

Contents

Description

The Wrapped class provides similar functionality as Control.Newtype, from the newtype package, but in a more convenient and efficient form.

There are a few functions from newtype that are not provided here, because they can be done with the Iso directly:

Control.Newtype.over Sum f ≡ _Unwrapping Sum %~ f
Control.Newtype.under Sum f ≡ _Wrapping Sum %~ f
Control.Newtype.overF Sum f ≡ mapping (_Unwrapping Sum) %~ f
Control.Newtype.underF Sum f ≡ mapping (_Wrapping Sum) %~ f

under can also be used with _Unwrapping to provide the equivalent of Control.Newtype.under. Also, most use cases don't need full polymorphism, so only the single constructor _Wrapping functions would be needed.

These equivalences aren't 100% honest, because newtype's operators need to rely on two Newtype constraints. This means that the wrapper used for the output is not necessarily the same as the input.

Synopsis

Wrapping and Unwrapping monomorphically

class Wrapped s where Source #

Wrapped provides isomorphisms to wrap and unwrap newtypes or data types with one constructor.

Associated Types

type Unwrapped s :: * Source #

Methods

_Wrapped' :: Iso' s (Unwrapped s) Source #

An isomorphism between s and a.

If your type has a Generic instance, _Wrapped' will default to _GWrapped', and you can choose to not override it with your own definition.

_Wrapped' :: (Generic s, D1 d (C1 c (S1 s' (Rec0 a))) ~ Rep s, Unwrapped s ~ GUnwrapped (Rep s)) => Iso' s (Unwrapped s) Source #

An isomorphism between s and a.

If your type has a Generic instance, _Wrapped' will default to _GWrapped', and you can choose to not override it with your own definition.

Instances
Wrapped PatternMatchFail Source # 
Instance details

Associated Types

type Unwrapped PatternMatchFail :: * Source #

Wrapped RecSelError Source # 
Instance details

Associated Types

type Unwrapped RecSelError :: * Source #

Wrapped RecConError Source # 
Instance details

Associated Types

type Unwrapped RecConError :: * Source #

Wrapped RecUpdError Source # 
Instance details

Associated Types

type Unwrapped RecUpdError :: * Source #

Wrapped NoMethodError Source # 
Instance details

Associated Types

type Unwrapped NoMethodError :: * Source #

Wrapped TypeError Source # 
Instance details

Associated Types

type Unwrapped TypeError :: * Source #

Wrapped CDev Source # 
Instance details

Associated Types

type Unwrapped CDev :: * Source #

Wrapped CIno Source # 
Instance details

Associated Types

type Unwrapped CIno :: * Source #

Wrapped CMode Source # 
Instance details

Associated Types

type Unwrapped CMode :: * Source #

Wrapped COff Source # 
Instance details

Associated Types

type Unwrapped COff :: * Source #

Wrapped CPid Source # 
Instance details

Associated Types

type Unwrapped CPid :: * Source #

Wrapped CSsize Source # 
Instance details

Associated Types

type Unwrapped CSsize :: * Source #

Wrapped CGid Source # 
Instance details

Associated Types

type Unwrapped CGid :: * Source #

Wrapped CNlink Source # 
Instance details

Associated Types

type Unwrapped CNlink :: * Source #

Wrapped CUid Source # 
Instance details

Associated Types

type Unwrapped CUid :: * Source #

Wrapped CCc Source # 
Instance details

Associated Types

type Unwrapped CCc :: * Source #

Wrapped CSpeed Source # 
Instance details

Associated Types

type Unwrapped CSpeed :: * Source #

Wrapped CTcflag Source # 
Instance details

Associated Types

type Unwrapped CTcflag :: * Source #

Wrapped CRLim Source # 
Instance details

Associated Types

type Unwrapped CRLim :: * Source #

Wrapped CBlkSize Source # 
Instance details

Associated Types

type Unwrapped CBlkSize :: * Source #

Wrapped CBlkCnt Source # 
Instance details

Associated Types

type Unwrapped CBlkCnt :: * Source #

Wrapped CClockId Source # 
Instance details

Associated Types

type Unwrapped CClockId :: * Source #

Wrapped CFsBlkCnt Source # 
Instance details

Associated Types

type Unwrapped CFsBlkCnt :: * Source #

Wrapped CFsFilCnt Source # 
Instance details

Associated Types

type Unwrapped CFsFilCnt :: * Source #

Wrapped CId Source # 
Instance details

Associated Types

type Unwrapped CId :: * Source #

Wrapped CKey Source # 
Instance details

Associated Types

type Unwrapped CKey :: * Source #

Wrapped CTimer Source # 
Instance details

Associated Types

type Unwrapped CTimer :: * Source #

Wrapped Fd Source # 
Instance details

Associated Types

type Unwrapped Fd :: * Source #

Wrapped Errno Source # 
Instance details

Associated Types

type Unwrapped Errno :: * Source #

Wrapped CompactionFailed Source # 
Instance details

Associated Types

type Unwrapped CompactionFailed :: * Source #

Wrapped AssertionFailed Source # 
Instance details

Associated Types

type Unwrapped AssertionFailed :: * Source #

Wrapped ErrorCall Source # 
Instance details

Associated Types

type Unwrapped ErrorCall :: * Source #

Wrapped All Source # 
Instance details

Associated Types

type Unwrapped All :: * Source #

Wrapped Any Source # 
Instance details

Associated Types

type Unwrapped Any :: * Source #

Wrapped CChar Source # 
Instance details

Associated Types

type Unwrapped CChar :: * Source #

Wrapped CSChar Source # 
Instance details

Associated Types

type Unwrapped CSChar :: * Source #

Wrapped CUChar Source # 
Instance details

Associated Types

type Unwrapped CUChar :: * Source #

Wrapped CShort Source # 
Instance details

Associated Types

type Unwrapped CShort :: * Source #

Wrapped CUShort Source # 
Instance details

Associated Types

type Unwrapped CUShort :: * Source #

Wrapped CInt Source # 
Instance details

Associated Types

type Unwrapped CInt :: * Source #

Wrapped CUInt Source # 
Instance details

Associated Types

type Unwrapped CUInt :: * Source #

Wrapped CLong Source # 
Instance details

Associated Types

type Unwrapped CLong :: * Source #

Wrapped CULong Source # 
Instance details

Associated Types

type Unwrapped CULong :: * Source #

Wrapped CLLong Source # 
Instance details

Associated Types

type Unwrapped CLLong :: * Source #

Wrapped CULLong Source # 
Instance details

Associated Types

type Unwrapped CULLong :: * Source #

Wrapped CBool Source # 
Instance details

Associated Types

type Unwrapped CBool :: * Source #

Wrapped CFloat Source # 
Instance details

Associated Types

type Unwrapped CFloat :: * Source #

Wrapped CDouble Source # 
Instance details

Associated Types

type Unwrapped CDouble :: * Source #

Wrapped CPtrdiff Source # 
Instance details

Associated Types

type Unwrapped CPtrdiff :: * Source #

Wrapped CSize Source # 
Instance details

Associated Types

type Unwrapped CSize :: * Source #

Wrapped CWchar Source # 
Instance details

Associated Types

type Unwrapped CWchar :: * Source #

Wrapped CSigAtomic Source # 
Instance details

Associated Types

type Unwrapped CSigAtomic :: * Source #

Wrapped CClock Source # 
Instance details

Associated Types

type Unwrapped CClock :: * Source #

Wrapped CTime Source # 
Instance details

Associated Types

type Unwrapped CTime :: * Source #

Wrapped CUSeconds Source # 
Instance details

Associated Types

type Unwrapped CUSeconds :: * Source #

Wrapped CSUSeconds Source # 
Instance details

Associated Types

type Unwrapped CSUSeconds :: * Source #

Wrapped CIntPtr Source # 
Instance details

Associated Types

type Unwrapped CIntPtr :: * Source #

Wrapped CUIntPtr Source # 
Instance details

Associated Types

type Unwrapped CUIntPtr :: * Source #

Wrapped CIntMax Source # 
Instance details

Associated Types

type Unwrapped CIntMax :: * Source #

Wrapped CUIntMax Source # 
Instance details

Associated Types

type Unwrapped CUIntMax :: * Source #

Wrapped IntSet Source # 
Instance details

Associated Types

type Unwrapped IntSet :: * Source #

Wrapped (Par1 p) Source # 
Instance details

Associated Types

type Unwrapped (Par1 p) :: * Source #

Methods

_Wrapped' :: Iso' (Par1 p) (Unwrapped (Par1 p)) Source #

Wrapped (Min a) Source # 
Instance details

Associated Types

type Unwrapped (Min a) :: * Source #

Methods

_Wrapped' :: Iso' (Min a) (Unwrapped (Min a)) Source #

Wrapped (Max a) Source # 
Instance details

Associated Types

type Unwrapped (Max a) :: * Source #

Methods

_Wrapped' :: Iso' (Max a) (Unwrapped (Max a)) Source #

Wrapped (First a) Source # 
Instance details

Associated Types

type Unwrapped (First a) :: * Source #

Methods

_Wrapped' :: Iso' (First a) (Unwrapped (First a)) Source #

Wrapped (Last a) Source # 
Instance details

Associated Types

type Unwrapped (Last a) :: * Source #

Methods

_Wrapped' :: Iso' (Last a) (Unwrapped (Last a)) Source #

Wrapped (WrappedMonoid a) Source # 
Instance details

Associated Types

type Unwrapped (WrappedMonoid a) :: * Source #

Wrapped (Option a) Source # 
Instance details

Associated Types

type Unwrapped (Option a) :: * Source #

Wrapped (NonEmpty a) Source # 
Instance details

Associated Types

type Unwrapped (NonEmpty a) :: * Source #

Wrapped (ZipList a) Source # 
Instance details

Associated Types

type Unwrapped (ZipList a) :: * Source #

Wrapped (Identity a) Source # 
Instance details

Associated Types

type Unwrapped (Identity a) :: * Source #

Wrapped (Dual a) Source # 
Instance details

Associated Types

type Unwrapped (Dual a) :: * Source #

Methods

_Wrapped' :: Iso' (Dual a) (Unwrapped (Dual a)) Source #

Wrapped (Endo a) Source # 
Instance details

Associated Types

type Unwrapped (Endo a) :: * Source #

Methods

_Wrapped' :: Iso' (Endo a) (Unwrapped (Endo a)) Source #

Wrapped (Sum a) Source # 
Instance details

Associated Types

type Unwrapped (Sum a) :: * Source #

Methods

_Wrapped' :: Iso' (Sum a) (Unwrapped (Sum a)) Source #

Wrapped (Product a) Source # 
Instance details

Associated Types

type Unwrapped (Product a) :: * Source #

Wrapped (First a) Source # 
Instance details

Associated Types

type Unwrapped (First a) :: * Source #

Methods

_Wrapped' :: Iso' (First a) (Unwrapped (First a)) Source #

Wrapped (Last a) Source # 
Instance details

Associated Types

type Unwrapped (Last a) :: * Source #

Methods

_Wrapped' :: Iso' (Last a) (Unwrapped (Last a)) Source #

Wrapped (Down a) Source # 
Instance details

Associated Types

type Unwrapped (Down a) :: * Source #

Methods

_Wrapped' :: Iso' (Down a) (Unwrapped (Down a)) Source #

Wrapped (IntMap a) Source # 
Instance details

Associated Types

type Unwrapped (IntMap a) :: * Source #

Wrapped (Seq a) Source # 
Instance details

Associated Types

type Unwrapped (Seq a) :: * Source #

Methods

_Wrapped' :: Iso' (Seq a) (Unwrapped (Seq a)) Source #

Ord a => Wrapped (Set a) Source # 
Instance details

Associated Types

type Unwrapped (Set a) :: * Source #

Methods

_Wrapped' :: Iso' (Set a) (Unwrapped (Set a)) Source #

Wrapped (Predicate a) Source # 
Instance details

Associated Types

type Unwrapped (Predicate a) :: * Source #

Wrapped (Comparison a) Source # 
Instance details

Associated Types

type Unwrapped (Comparison a) :: * Source #

Wrapped (Equivalence a) Source # 
Instance details

Associated Types

type Unwrapped (Equivalence a) :: * Source #

(Hashable a, Eq a) => Wrapped (HashSet a) Source # 
Instance details

Associated Types

type Unwrapped (HashSet a) :: * Source #

Unbox a => Wrapped (Vector a) Source # 
Instance details

Associated Types

type Unwrapped (Vector a) :: * Source #

Storable a => Wrapped (Vector a) Source # 
Instance details

Associated Types

type Unwrapped (Vector a) :: * Source #

Prim a => Wrapped (Vector a) Source # 
Instance details

Associated Types

type Unwrapped (Vector a) :: * Source #

Wrapped (Vector a) Source # 
Instance details

Associated Types

type Unwrapped (Vector a) :: * Source #

Wrapped (Op a b) Source # 
Instance details

Associated Types

type Unwrapped (Op a b) :: * Source #

Methods

_Wrapped' :: Iso' (Op a b) (Unwrapped (Op a b)) Source #

Wrapped (WrappedMonad m a) Source # 
Instance details

Associated Types

type Unwrapped (WrappedMonad m a) :: * Source #

Wrapped (ArrowMonad m a) Source # 
Instance details

Associated Types

type Unwrapped (ArrowMonad m a) :: * Source #

Ord k => Wrapped (Map k a) Source # 
Instance details

Associated Types

type Unwrapped (Map k a) :: * Source #

Methods

_Wrapped' :: Iso' (Map k a) (Unwrapped (Map k a)) Source #

Wrapped (CatchT m a) Source # 
Instance details

Associated Types

type Unwrapped (CatchT m a) :: * Source #

Methods

_Wrapped' :: Iso' (CatchT m a) (Unwrapped (CatchT m a)) Source #

Wrapped (IterT m a) Source # 
Instance details

Associated Types

type Unwrapped (IterT m a) :: * Source #

Methods

_Wrapped' :: Iso' (IterT m a) (Unwrapped (IterT m a)) Source #

Wrapped (CoiterT w a) Source # 
Instance details

Associated Types

type Unwrapped (CoiterT w a) :: * Source #

Methods

_Wrapped' :: Iso' (CoiterT w a) (Unwrapped (CoiterT w a)) Source #

Wrapped (Alt f a) Source # 
Instance details

Associated Types

type Unwrapped (Alt f a) :: * Source #

Methods

_Wrapped' :: Iso' (Alt f a) (Unwrapped (Alt f a)) Source #

Wrapped (ListT m a) Source # 
Instance details

Associated Types

type Unwrapped (ListT m a) :: * Source #

Methods

_Wrapped' :: Iso' (ListT m a) (Unwrapped (ListT m a)) Source #

(Hashable k, Eq k) => Wrapped (HashMap k a) Source # 
Instance details

Associated Types

type Unwrapped (HashMap k a) :: * Source #

Methods

_Wrapped' :: Iso' (HashMap k a) (Unwrapped (HashMap k a)) Source #

Wrapped (WrappedApplicative f a) Source # 
Instance details

Associated Types

type Unwrapped (WrappedApplicative f a) :: * Source #

Wrapped (MaybeApply f a) Source # 
Instance details

Associated Types

type Unwrapped (MaybeApply f a) :: * Source #

Wrapped (MaybeT m a) Source # 
Instance details

Associated Types

type Unwrapped (MaybeT m a) :: * Source #

Methods

_Wrapped' :: Iso' (MaybeT m a) (Unwrapped (MaybeT m a)) Source #

Wrapped (Rec1 k f p) Source # 
Instance details

Associated Types

type Unwrapped (Rec1 k f p) :: * Source #

Methods

_Wrapped' :: Iso' (Rec1 k f p) (Unwrapped (Rec1 k f p)) Source #

Wrapped (WrappedArrow a b c) Source # 
Instance details

Associated Types

type Unwrapped (WrappedArrow a b c) :: * Source #

Wrapped (Kleisli m a b) Source # 
Instance details

Associated Types

type Unwrapped (Kleisli m a b) :: * Source #

Methods

_Wrapped' :: Iso' (Kleisli m a b) (Unwrapped (Kleisli m a b)) Source #

Wrapped (Const k a x) Source # 
Instance details

Associated Types

type Unwrapped (Const k a x) :: * Source #

Methods

_Wrapped' :: Iso' (Const k a x) (Unwrapped (Const k a x)) Source #

Wrapped (Alt k f a) Source # 
Instance details

Associated Types

type Unwrapped (Alt k f a) :: * Source #

Methods

_Wrapped' :: Iso' (Alt k f a) (Unwrapped (Alt k f a)) Source #

Wrapped (Join k p a) Source # 
Instance details

Associated Types

type Unwrapped (Join k p a) :: * Source #

Methods

_Wrapped' :: Iso' (Join k p a) (Unwrapped (Join k p a)) Source #

Wrapped (Fix k p a) Source # 
Instance details

Associated Types

type Unwrapped (Fix k p a) :: * Source #

Methods

_Wrapped' :: Iso' (Fix k p a) (Unwrapped (Fix k p a)) Source #

Wrapped (TracedT m w a) Source # 
Instance details

Associated Types

type Unwrapped (TracedT m w a) :: * Source #

Methods

_Wrapped' :: Iso' (TracedT m w a) (Unwrapped (TracedT m w a)) Source #

Wrapped (IdentityT k m a) Source # 
Instance details

Associated Types

type Unwrapped (IdentityT k m a) :: * Source #

Methods

_Wrapped' :: Iso' (IdentityT k m a) (Unwrapped (IdentityT k m a)) Source #

Wrapped (Compose f g a) Source # 
Instance details

Associated Types

type Unwrapped (Compose f g a) :: * Source #

Methods

_Wrapped' :: Iso' (Compose f g a) (Unwrapped (Compose f g a)) Source #

Wrapped (ComposeFC f g a) Source # 
Instance details

Associated Types

type Unwrapped (ComposeFC f g a) :: * Source #

Methods

_Wrapped' :: Iso' (ComposeFC f g a) (Unwrapped (ComposeFC f g a)) Source #

Wrapped (ComposeCF f g a) Source # 
Instance details

Associated Types

type Unwrapped (ComposeCF f g a) :: * Source #

Methods

_Wrapped' :: Iso' (ComposeCF f g a) (Unwrapped (ComposeCF f g a)) Source #

Wrapped (FreeT f m a) Source # 
Instance details

Associated Types

type Unwrapped (FreeT f m a) :: * Source #

Methods

_Wrapped' :: Iso' (FreeT f m a) (Unwrapped (FreeT f m a)) Source #

Wrapped (CofreeT f w a) Source # 
Instance details

Associated Types

type Unwrapped (CofreeT f w a) :: * Source #

Methods

_Wrapped' :: Iso' (CofreeT f w a) (Unwrapped (CofreeT f w a)) Source #

Wrapped (ApT f g a) Source # 
Instance details

Associated Types

type Unwrapped (ApT f g a) :: * Source #

Methods

_Wrapped' :: Iso' (ApT f g a) (Unwrapped (ApT f g a)) Source #

Wrapped (ErrorT e m a) Source # 
Instance details

Associated Types

type Unwrapped (ErrorT e m a) :: * Source #

Methods

_Wrapped' :: Iso' (ErrorT e m a) (Unwrapped (ErrorT e m a)) Source #

Wrapped (ExceptT e m a) Source # 
Instance details

Associated Types

type Unwrapped (ExceptT e m a) :: * Source #

Methods

_Wrapped' :: Iso' (ExceptT e m a) (Unwrapped (ExceptT e m a)) Source #

Wrapped (StateT s m a) Source # 
Instance details

Associated Types

type Unwrapped (StateT s m a) :: * Source #

Methods

_Wrapped' :: Iso' (StateT s m a) (Unwrapped (StateT s m a)) Source #

Wrapped (StateT s m a) Source # 
Instance details

Associated Types

type Unwrapped (StateT s m a) :: * Source #

Methods

_Wrapped' :: Iso' (StateT s m a) (Unwrapped (StateT s m a)) Source #

Wrapped (WriterT w m a) Source # 
Instance details

Associated Types

type Unwrapped (WriterT w m a) :: * Source #

Methods

_Wrapped' :: Iso' (WriterT w m a) (Unwrapped (WriterT w m a)) Source #

Wrapped (WriterT w m a) Source # 
Instance details

Associated Types

type Unwrapped (WriterT w m a) :: * Source #

Methods

_Wrapped' :: Iso' (WriterT w m a) (Unwrapped (WriterT w m a)) Source #

Wrapped (Star f d c) Source # 
Instance details

Associated Types

type Unwrapped (Star f d c) :: * Source #

Methods

_Wrapped' :: Iso' (Star f d c) (Unwrapped (Star f d c)) Source #

Wrapped (Costar f d c) Source # 
Instance details

Associated Types

type Unwrapped (Costar f d c) :: * Source #

Methods

_Wrapped' :: Iso' (Costar f d c) (Unwrapped (Costar f d c)) Source #

Wrapped (WrappedArrow p a b) Source # 
Instance details

Associated Types

type Unwrapped (WrappedArrow p a b) :: * Source #

Wrapped (Forget r a b) Source # 
Instance details

Associated Types

type Unwrapped (Forget r a b) :: * Source #

Methods

_Wrapped' :: Iso' (Forget r a b) (Unwrapped (Forget r a b)) Source #

Wrapped (Static f a b) Source # 
Instance details

Associated Types

type Unwrapped (Static f a b) :: * Source #

Methods

_Wrapped' :: Iso' (Static f a b) (Unwrapped (Static f a b)) Source #

Wrapped (Tagged k s a) Source # 
Instance details

Associated Types

type Unwrapped (Tagged k s a) :: * Source #

Methods

_Wrapped' :: Iso' (Tagged k s a) (Unwrapped (Tagged k s a)) Source #

Wrapped (Reverse k f a) Source # 
Instance details

Associated Types

type Unwrapped (Reverse k f a) :: * Source #

Methods

_Wrapped' :: Iso' (Reverse k f a) (Unwrapped (Reverse k f a)) Source #

Wrapped (Constant k a b) Source # 
Instance details

Associated Types

type Unwrapped (Constant k a b) :: * Source #

Methods

_Wrapped' :: Iso' (Constant k a b) (Unwrapped (Constant k a b)) Source #

Wrapped (Backwards k f a) Source # 
Instance details

Associated Types

type Unwrapped (Backwards k f a) :: * Source #

Methods

_Wrapped' :: Iso' (Backwards k f a) (Unwrapped (Backwards k f a)) Source #

Wrapped (K1 k i c p) Source # 
Instance details

Associated Types

type Unwrapped (K1 k i c p) :: * Source #

Methods

_Wrapped' :: Iso' (K1 k i c p) (Unwrapped (K1 k i c p)) Source #

Wrapped (ContT k r m a) Source # 
Instance details

Associated Types

type Unwrapped (ContT k r m a) :: * Source #

Methods

_Wrapped' :: Iso' (ContT k r m a) (Unwrapped (ContT k r m a)) Source #

Wrapped (ReaderT k r m a) Source # 
Instance details

Associated Types

type Unwrapped (ReaderT k r m a) :: * Source #

Methods

_Wrapped' :: Iso' (ReaderT k r m a) (Unwrapped (ReaderT k r m a)) Source #

Wrapped (Cayley f p a b) Source # 
Instance details

Associated Types

type Unwrapped (Cayley f p a b) :: * Source #

Methods

_Wrapped' :: Iso' (Cayley f p a b) (Unwrapped (Cayley f p a b)) Source #

Wrapped (M1 k i c f p) Source # 
Instance details

Associated Types

type Unwrapped (M1 k i c f p) :: * Source #

Methods

_Wrapped' :: Iso' (M1 k i c f p) (Unwrapped (M1 k i c f p)) Source #

Wrapped ((:.:) k2 k1 f g p) Source # 
Instance details

Associated Types

type Unwrapped ((k2 :.: k1) f g p) :: * Source #

Methods

_Wrapped' :: Iso' ((k2 :.: k1) f g p) (Unwrapped ((k2 :.: k1) f g p)) Source #

Wrapped (Compose k k1 f g a) Source # 
Instance details

Associated Types

type Unwrapped (Compose k k1 f g a) :: * Source #

Methods

_Wrapped' :: Iso' (Compose k k1 f g a) (Unwrapped (Compose k k1 f g a)) Source #

Wrapped (WrappedBifunctor k k1 p a b) Source # 
Instance details

Associated Types

type Unwrapped (WrappedBifunctor k k1 p a b) :: * Source #

Methods

_Wrapped' :: Iso' (WrappedBifunctor k k1 p a b) (Unwrapped (WrappedBifunctor k k1 p a b)) Source #

Wrapped (Joker k k1 g a b) Source # 
Instance details

Associated Types

type Unwrapped (Joker k k1 g a b) :: * Source #

Methods

_Wrapped' :: Iso' (Joker k k1 g a b) (Unwrapped (Joker k k1 g a b)) Source #

Wrapped (Flip k k1 p a b) Source # 
Instance details

Associated Types

type Unwrapped (Flip k k1 p a b) :: * Source #

Methods

_Wrapped' :: Iso' (Flip k k1 p a b) (Unwrapped (Flip k k1 p a b)) Source #

Wrapped (Clown k k1 f a b) Source # 
Instance details

Associated Types

type Unwrapped (Clown k k1 f a b) :: * Source #

Methods

_Wrapped' :: Iso' (Clown k k1 f a b) (Unwrapped (Clown k k1 f a b)) Source #

Wrapped (RWST r w s m a) Source # 
Instance details

Associated Types

type Unwrapped (RWST r w s m a) :: * Source #

Methods

_Wrapped' :: Iso' (RWST r w s m a) (Unwrapped (RWST r w s m a)) Source #

Wrapped (RWST r w s m a) Source # 
Instance details

Associated Types

type Unwrapped (RWST r w s m a) :: * Source #

Methods

_Wrapped' :: Iso' (RWST r w s m a) (Unwrapped (RWST r w s m a)) Source #

Wrapped (Dual k2 k1 k3 a b) Source # 
Instance details

Associated Types

type Unwrapped (Dual k2 k1 k3 a b) :: * Source #

Methods

_Wrapped' :: Iso' (Dual k2 k1 k3 a b) (Unwrapped (Dual k2 k1 k3 a b)) Source #

Wrapped (WrappedCategory k1 k2 k3 a b) Source # 
Instance details

Associated Types

type Unwrapped (WrappedCategory k1 k2 k3 a b) :: * Source #

Methods

_Wrapped' :: Iso' (WrappedCategory k1 k2 k3 a b) (Unwrapped (WrappedCategory k1 k2 k3 a b)) Source #

Wrapped (Semi k k1 m a b) Source # 
Instance details

Associated Types

type Unwrapped (Semi k k1 m a b) :: * Source #

Methods

_Wrapped' :: Iso' (Semi k k1 m a b) (Unwrapped (Semi k k1 m a b)) Source #

Wrapped (Tannen k k1 k2 f p a b) Source # 
Instance details

Associated Types

type Unwrapped (Tannen k k1 k2 f p a b) :: * Source #

Methods

_Wrapped' :: Iso' (Tannen k k1 k2 f p a b) (Unwrapped (Tannen k k1 k2 f p a b)) Source #

Wrapped (Biff k k1 k2 k3 p f g a b) Source # 
Instance details

Associated Types

type Unwrapped (Biff k k1 k2 k3 p f g a b) :: * Source #

Methods

_Wrapped' :: Iso' (Biff k k1 k2 k3 p f g a b) (Unwrapped (Biff k k1 k2 k3 p f g a b)) Source #

_Wrapping' :: Wrapped s => (Unwrapped s -> s) -> Iso' s (Unwrapped s) Source #

This is a convenient version of _Wrapped with an argument that's ignored.

The user supplied function is ignored, merely its type is used.

_Unwrapping' :: Wrapped s => (Unwrapped s -> s) -> Iso' (Unwrapped s) s Source #

This is a convenient version of _Wrapped with an argument that's ignored.

The user supplied function is ignored, merely its type is used.

Wrapping and unwrapping polymorphically

class Wrapped s => Rewrapped (s :: *) (t :: *) Source #

Instances
(~) * t PatternMatchFail => Rewrapped PatternMatchFail t Source # 
Instance details
(~) * t RecSelError => Rewrapped RecSelError t Source # 
Instance details
(~) * t RecConError => Rewrapped RecConError t Source # 
Instance details
(~) * t RecUpdError => Rewrapped RecUpdError t Source # 
Instance details
(~) * t NoMethodError => Rewrapped NoMethodError t Source # 
Instance details
(~) * t TypeError => Rewrapped TypeError t Source # 
Instance details
Rewrapped CDev t Source # 
Instance details
Rewrapped CIno t Source # 
Instance details
Rewrapped CMode t Source # 
Instance details
Rewrapped COff t Source # 
Instance details
Rewrapped CPid t Source # 
Instance details
Rewrapped CSsize t Source # 
Instance details
Rewrapped CGid t Source # 
Instance details
Rewrapped CNlink t Source # 
Instance details
Rewrapped CUid t Source # 
Instance details
Rewrapped CCc t Source # 
Instance details
Rewrapped CSpeed t Source # 
Instance details
Rewrapped CTcflag t Source # 
Instance details
Rewrapped CRLim t Source # 
Instance details
Rewrapped CBlkSize t Source # 
Instance details
Rewrapped CBlkCnt t Source # 
Instance details
Rewrapped CClockId t Source # 
Instance details
Rewrapped CFsBlkCnt t Source # 
Instance details
Rewrapped CFsFilCnt t Source # 
Instance details
Rewrapped CId t Source # 
Instance details
Rewrapped CKey t Source # 
Instance details
Rewrapped CTimer t Source # 
Instance details
Rewrapped Fd t Source # 
Instance details
Rewrapped Errno t Source # 
Instance details
(~) * t CompactionFailed => Rewrapped CompactionFailed t Source # 
Instance details
(~) * t AssertionFailed => Rewrapped AssertionFailed t Source # 
Instance details
(~) * t ErrorCall => Rewrapped ErrorCall t Source # 
Instance details
(~) * t All => Rewrapped All t Source # 
Instance details
(~) * t Any => Rewrapped Any t Source # 
Instance details
Rewrapped CChar t Source # 
Instance details
Rewrapped CSChar t Source # 
Instance details
Rewrapped CUChar t Source # 
Instance details
Rewrapped CShort t Source # 
Instance details
Rewrapped CUShort t Source # 
Instance details
Rewrapped CInt t Source # 
Instance details
Rewrapped CUInt t Source # 
Instance details
Rewrapped CLong t Source # 
Instance details
Rewrapped CULong t Source # 
Instance details
Rewrapped CLLong t Source # 
Instance details
Rewrapped CULLong t Source # 
Instance details
Rewrapped CBool t Source # 
Instance details
Rewrapped CFloat t Source # 
Instance details
Rewrapped CDouble t Source # 
Instance details
Rewrapped CPtrdiff t Source # 
Instance details
Rewrapped CSize t Source # 
Instance details
Rewrapped CWchar t Source # 
Instance details
Rewrapped CSigAtomic t Source # 
Instance details
Rewrapped CClock t Source # 
Instance details
Rewrapped CTime t Source # 
Instance details
Rewrapped CUSeconds t Source # 
Instance details
Rewrapped CSUSeconds t Source # 
Instance details
Rewrapped CIntPtr t Source # 
Instance details
Rewrapped CUIntPtr t Source # 
Instance details
Rewrapped CIntMax t Source # 
Instance details
Rewrapped CUIntMax t Source # 
Instance details
(~) * t IntSet => Rewrapped IntSet t Source #

Use wrapping fromList. unwrapping returns a sorted list.

Instance details
(~) * t (Par1 p') => Rewrapped (Par1 p) t Source # 
Instance details
(~) * t (Min b) => Rewrapped (Min a) t Source # 
Instance details
(~) * t (Max b) => Rewrapped (Max a) t Source # 
Instance details
(~) * t (First b) => Rewrapped (First a) t Source # 
Instance details
(~) * t (Last b) => Rewrapped (Last a) t Source # 
Instance details
(~) * t (WrappedMonoid b) => Rewrapped (WrappedMonoid a) t Source # 
Instance details
(~) * t (Option b) => Rewrapped (Option a) t Source # 
Instance details
(~) * t (NonEmpty b) => Rewrapped (NonEmpty a) t Source # 
Instance details
(~) * t (ZipList b) => Rewrapped (ZipList a) t Source # 
Instance details
(~) * t (Identity b) => Rewrapped (Identity a) t Source # 
Instance details
(~) * t (Dual b) => Rewrapped (Dual a) t Source # 
Instance details
(~) * t (Endo b) => Rewrapped (Endo a) t Source # 
Instance details
(~) * t (Sum b) => Rewrapped (Sum a) t Source # 
Instance details
(~) * t (Product b) => Rewrapped (Product a) t Source # 
Instance details
(~) * t (First b) => Rewrapped (First a) t Source # 
Instance details
(~) * t (Last b) => Rewrapped (Last a) t Source # 
Instance details
(~) * t (Down b) => Rewrapped (Down a) t Source # 
Instance details
(~) * t (IntMap a') => Rewrapped (IntMap a) t Source #

Use wrapping fromList. unwrapping returns a sorted list.

Instance details
(~) * t (Seq a') => Rewrapped (Seq a) t Source # 
Instance details
((~) * t (Set a'), Ord a) => Rewrapped (Set a) t Source #

Use wrapping fromList. unwrapping returns a sorted list.

Instance details
(~) * t (Predicate b) => Rewrapped (Predicate a) t Source # 
Instance details
(~) * t (Comparison b) => Rewrapped (Comparison a) t Source # 
Instance details
(~) * t (Equivalence b) => Rewrapped (Equivalence a) t Source # 
Instance details
((~) * t (HashSet a'), Hashable a, Eq a) => Rewrapped (HashSet a) t Source #

Use wrapping fromList. Unwrapping returns some permutation of the list.

Instance details
(Unbox a, (~) * t (Vector a')) => Rewrapped (Vector a) t Source # 
Instance details
(Storable a, (~) * t (Vector a')) => Rewrapped (Vector a) t Source # 
Instance details
(Prim a, (~) * t (Vector a')) => Rewrapped (Vector a) t Source # 
Instance details
(~) * t (Vector a') => Rewrapped (Vector a) t Source # 
Instance details
(~) * t (Op a' b') => Rewrapped (Op a b) t Source # 
Instance details
(~) * t (WrappedMonad m' a') => Rewrapped (WrappedMonad m a) t Source # 
Instance details
(~) * t (ArrowMonad m' a') => Rewrapped (ArrowMonad m a) t Source # 
Instance details
((~) * t (Map k' a'), Ord k) => Rewrapped (Map k a) t Source #

Use wrapping fromList. unwrapping returns a sorted list.

Instance details
(~) * t (CatchT m' a') => Rewrapped (CatchT m a) t Source # 
Instance details
(~) * t (IterT m' a') => Rewrapped (IterT m a) t Source # 
Instance details
(~) * t (CoiterT w' a') => Rewrapped (CoiterT w a) t Source # 
Instance details
(~) * t (Alt f' a') => Rewrapped (Alt f a) t Source # 
Instance details
(~) * t (ListT n b) => Rewrapped (ListT m a) t Source # 
Instance details
((~) * t (HashMap k' a'), Hashable k, Eq k) => Rewrapped (HashMap k a) t Source #

Use wrapping fromList. Unwrapping returns some permutation of the list.

Instance details
(~) * t (WrappedApplicative f' a') => Rewrapped (WrappedApplicative f a) t Source # 
Instance details
(~) * t (MaybeApply f' a') => Rewrapped (MaybeApply f a) t Source # 
Instance details
(~) * t (MaybeT n b) => Rewrapped (MaybeT m a) t Source # 
Instance details
(~) * t (Rec1 k2 f' p') => Rewrapped (Rec1 k1 f p) t Source # 
Instance details
(~) * t (WrappedArrow a' b' c') => Rewrapped (WrappedArrow a b c) t Source # 
Instance details
(~) * t (Kleisli m' a' b') => Rewrapped (Kleisli m a b) t Source # 
Instance details
(~) * t (Const k2 a' x') => Rewrapped (Const k1 a x) t Source # 
Instance details
(~) * t (Alt k2 g b) => Rewrapped (Alt k1 f a) t Source # 
Instance details
(~) * t (Join k2 p' a') => Rewrapped (Join k1 p a) t Source # 
Instance details
(~) * t (Fix k2 p' a') => Rewrapped (Fix k1 p a) t Source # 
Instance details
(~) * t (TracedT m' w' a') => Rewrapped (TracedT m w a) t Source # 
Instance details
(~) * t (IdentityT k2 n b) => Rewrapped (IdentityT k1 m a) t Source # 
Instance details
(~) * t (Compose f' g' a') => Rewrapped (Compose f g a) t Source # 
Instance details
(~) * t (ComposeFC f' g' a') => Rewrapped (ComposeFC f g a) t Source # 
Instance details
(~) * t (ComposeCF f' g' a') => Rewrapped (ComposeCF f g a) t Source # 
Instance details
(~) * t (FreeT f' m' a') => Rewrapped (FreeT f m a) t Source # 
Instance details
(~) * t (CofreeT f' w' a') => Rewrapped (CofreeT f w a) t Source # 
Instance details
(~) * t (ApT f' g' a') => Rewrapped (ApT f g a) t Source # 
Instance details
(~) * t (ErrorT e' m' a') => Rewrapped (ErrorT e m a) t Source # 
Instance details
(~) * t (ExceptT e' m' a') => Rewrapped (ExceptT e m a) t Source # 
Instance details
(~) * t (StateT s' m' a') => Rewrapped (StateT s m a) t Source # 
Instance details
(~) * t (StateT s' m' a') => Rewrapped (StateT s m a) t Source # 
Instance details
(~) * t (WriterT w' m' a') => Rewrapped (WriterT w m a) t Source # 
Instance details
(~) * t (WriterT w' m' a') => Rewrapped (WriterT w m a) t Source # 
Instance details
(~) * t (Star f' d' c') => Rewrapped (Star f d c) t Source # 
Instance details
(~) * t (Costar f' d' c') => Rewrapped (Costar f d c) t Source # 
Instance details
(~) * t (WrappedArrow p' a' b') => Rewrapped (WrappedArrow p a b) t Source # 
Instance details
(~) * t (Forget r' a' b') => Rewrapped (Forget r a b) t Source # 
Instance details
(~) * t (Static f' a' b') => Rewrapped (Static f a b) t Source # 
Instance details
(~) * t (Tagged k2 s' a') => Rewrapped (Tagged k1 s a) t Source # 
Instance details
(~) * t (Reverse k2 g b) => Rewrapped (Reverse k1 f a) t Source # 
Instance details
(~) * t (Constant k2 a' b') => Rewrapped (Constant k1 a b) t Source # 
Instance details
(~) * t (Backwards k2 g b) => Rewrapped (Backwards k1 f a) t Source # 
Instance details
(~) * t (K1 k2 i' c' p') => Rewrapped (K1 k1 i c p) t Source # 
Instance details
(~) * t (ContT k2 r' m' a') => Rewrapped (ContT k1 r m a) t Source # 
Instance details
(~) * t (ReaderT k2 s n b) => Rewrapped (ReaderT k1 r m a) t Source # 
Instance details
(~) * t (Cayley f' p' a' b') => Rewrapped (Cayley f p a b) t Source # 
Instance details
(~) * t (M1 k2 i' c' f' p') => Rewrapped (M1 k1 i c f p) t Source # 
Instance details
(~) * t ((:.:) k7 k6 f' g' p') => Rewrapped ((:.:) k5 k4 f g p) t Source # 
Instance details
(~) * t (Compose k5 k4 f' g' a') => Rewrapped (Compose k3 k2 f g a) t Source # 
Instance details
(~) * t (WrappedBifunctor k4 k5 p' a' b') => Rewrapped (WrappedBifunctor k2 k3 p a b) t Source # 
Instance details
(~) * t (Joker k4 k5 g' a' b') => Rewrapped (Joker k2 k3 g a b) t Source # 
Instance details
(~) * t (Flip k5 k4 p' a' b') => Rewrapped (Flip k3 k2 p a b) t Source # 
Instance details
(~) * t (Clown k5 k4 f' a' b') => Rewrapped (Clown k3 k2 f a b) t Source # 
Instance details
(~) * t (RWST r' w' s' m' a') => Rewrapped (RWST r w s m a) t Source # 
Instance details
(~) * t (RWST r' w' s' m' a') => Rewrapped (RWST r w s m a) t Source # 
Instance details
(~) * t (Dual k5 k4 k' a' b') => Rewrapped (Dual k3 k2 k6 a b) t Source # 
Instance details
(~) * t (WrappedCategory k4 k5 k' a' b') => Rewrapped (WrappedCategory k2 k3 k6 a b) t Source # 
Instance details
(~) * t (Semi k5 k4 m' a' b') => Rewrapped (Semi k3 k2 m a b) t Source # 
Instance details
(~) * t (Tannen k9 k7 k8 f' p' a' b') => Rewrapped (Tannen k6 k4 k5 f p a b) t Source # 
Instance details
(~) * t (Biff k10 k11 k9 k8 p' f' g' a' b') => Rewrapped (Biff k6 k7 k5 k4 p f g a b) t Source # 
Instance details

class (Rewrapped s t, Rewrapped t s) => Rewrapping s t Source #

Instances
(Rewrapped s t, Rewrapped t s) => Rewrapping s t Source # 
Instance details

_Wrapped :: Rewrapping s t => Iso s t (Unwrapped s) (Unwrapped t) Source #

Work under a newtype wrapper.

>>> Const "hello" & _Wrapped %~ Prelude.length & getConst
5
_Wrappedfrom _Unwrapped
_Unwrappedfrom _Wrapped

_Wrapping :: Rewrapping s t => (Unwrapped s -> s) -> Iso s t (Unwrapped s) (Unwrapped t) Source #

This is a convenient version of _Wrapped with an argument that's ignored.

The user supplied function is ignored, merely its types are used.

_Unwrapping :: Rewrapping s t => (Unwrapped s -> s) -> Iso (Unwrapped t) (Unwrapped s) t s Source #

This is a convenient version of _Unwrapped with an argument that's ignored.

The user supplied function is ignored, merely its types are used.

Operations

op :: Wrapped s => (Unwrapped s -> s) -> s -> Unwrapped s Source #

Given the constructor for a Wrapped type, return a deconstructor that is its inverse.

Assuming the Wrapped instance is legal, these laws hold:

op f . f ≡ id
f . op f ≡ id
>>> op Identity (Identity 4)
4
>>> op Const (Const "hello")
"hello"

ala :: (Functor f, Rewrapping s t) => (Unwrapped s -> s) -> ((Unwrapped t -> t) -> f s) -> f (Unwrapped s) Source #

This combinator is based on ala from Conor McBride's work on Epigram.

As with _Wrapping, the user supplied function for the newtype is ignored.

>>> ala Sum foldMap [1,2,3,4]
10
>>> ala All foldMap [True,True]
True
>>> ala All foldMap [True,False]
False
>>> ala Any foldMap [False,False]
False
>>> ala Any foldMap [True,False]
True
>>> ala Product foldMap [1,2,3,4]
24

You may want to think of this combinator as having the following, simpler, type.

ala :: Rewrapping s t => (Unwrapped s -> s) -> ((Unwrapped t -> t) -> e -> s) -> e -> Unwrapped s

alaf :: (Functor f, Functor g, Rewrapping s t) => (Unwrapped s -> s) -> (f t -> g s) -> f (Unwrapped t) -> g (Unwrapped s) Source #

This combinator is based on ala' from Conor McBride's work on Epigram.

As with _Wrapping, the user supplied function for the newtype is ignored.

alaf :: Rewrapping s t => (Unwrapped s -> s) -> ((r ->  t) -> e -> s) -> (r -> Unwrapped t) -> e -> Unwrapped s
>>> alaf Sum foldMap Prelude.length ["hello","world"]
10

Pattern Synonyms

pattern Wrapped :: forall s. Rewrapped s s => Unwrapped s -> s Source #

pattern Unwrapped :: forall t. Rewrapped t t => t -> Unwrapped t Source #

Generics

_GWrapped' :: (Generic s, D1 d (C1 c (S1 s' (Rec0 a))) ~ Rep s, Unwrapped s ~ GUnwrapped (Rep s)) => Iso' s (Unwrapped s) Source #

Implement the _Wrapped operation for a type using its Generic instance.