Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module contains lenses, prisms, grids, grates and traversals for common structures in Haskell. It also contains the combinators for various kinds of optics.
A Function name with '
is a grate variant of a grid, and a function name with _
is a traversal variants of a grid or prism.
For example, both'
is the grate variant of both
while both_
is the traversal variant.
Synopsis
- _1 :: Lens (a, r) (b, r) a b
- _2 :: Lens (r, a) (r, b) a b
- chosen :: Lens (Either a a) (Either b b) a b
- ix :: Eq k => k -> Lens' (k -> v) v
- at :: Ord k => k -> Lens' (Map k v) (Maybe v)
- intAt :: Int -> Lens' (IntMap v) (Maybe v)
- at' :: Ord k => k -> Lens' (Map k v) (Maybe v)
- intAt' :: Int -> Lens' (IntMap v) (Maybe v)
- contains :: Ord k => k -> Lens' (Set k) Bool
- intContains :: Int -> Lens' IntSet Bool
- left :: Prism (Either a r) (Either b r) a b
- right :: Prism (Either r a) (Either r b) a b
- just :: Prism (Maybe a) (Maybe b) a b
- nothing :: Prism' (Maybe a) ()
- both :: Grid (a, a) (b, b) a b
- bend :: FiniteBits b => Grid' b Bool
- lend :: FiniteBits b => Grid' b Bool
- cod :: Grate (r -> a) (r -> b) a b
- both' :: Grate (a, a) (b, b) a b
- bend' :: FiniteBits b => Grate' b Bool
- lend' :: FiniteBits b => Grate' b Bool
- both_ :: Traversal (a, a) (b, b) a b
- bend_ :: FiniteBits b => Traversal' b Bool
- lend_ :: FiniteBits b => Traversal' b Bool
- left_ :: Traversal (Either a r) (Either b r) a b
- right_ :: Traversal (Either r a) (Either r b) a b
- just_ :: Traversal (Maybe a) (Maybe b) a b
- nothing_ :: Traversal' (Maybe a) ()
- ignored :: Traversal a a b b'
- mapped :: Functor f => Setter (f a) (f a') a a'
- alongside :: Functor f => LensLike (AlongsideLeft f b1) s0 t0 a0 b0 -> LensLike (AlongsideRight f t0) s1 t1 a1 b1 -> LensLike f (s0, s1) (t0, t1) (a0, a1) (b0, b1)
- backwards :: LensLike (Backwards f) s t a b -> LensLike f s t a b
- beside :: (Applicative f, Functor g) => AdapterLike f g s0 t0 a b -> AdapterLike f g s1 t1 a b -> AdapterLike f g (s0, s1) (t0, t1) a b
- beside' :: Functor g => GrateLike g s0 t0 a b -> GrateLike g s1 t1 a b -> GrateLike g (s0, s1) (t0, t1) a b
- beside_ :: Applicative f => LensLike f s0 t0 a b -> LensLike f s1 t1 a b -> LensLike f (s0, s1) (t0, t1) a b
- choosing :: Functor f => LensLike f s0 t0 a b -> LensLike f s1 t1 a b -> LensLike f (Either s0 s1) (Either t0 t1) a b
- from :: (Functor f, Functor g) => AdapterLike (FromF (g s -> f t) (f b) g) (FromG (f b) f) b a t s -> AdapterLike f g s t a b
- data AlongsideLeft (f :: Type -> Type) b a
- data AlongsideRight (f :: Type -> Type) a b
- data FromF i j (g :: Type -> Type) x
- data FromG e (f :: Type -> Type) x
- type Lens s t a b = forall f. Functor f => LensLike f s t a b
- type Lens' s a = forall f. Functor f => LensLike' f s a
- type Grate s t a b = forall g. Functor g => GrateLike g s t a b
- type Grate' s a = forall g. Functor g => GrateLike' g s a
- type Traversal s t a b = forall f. Applicative f => LensLike f s t a b
- type Traversal' s a = forall f. Applicative f => LensLike' f s a
- type Setter s t a b = forall f. Identical f => LensLike f s t a b
- type AdapterLike (f :: Type -> Type) (g :: Type -> Type) s t a b = (g a -> f b) -> g s -> f t
- type AdapterLike' (f :: Type -> Type) (g :: Type -> Type) s a = (g a -> f a) -> g s -> f s
- type LensLike (f :: Type -> Type) s t a b = (a -> f b) -> s -> f t
- type LensLike' (f :: Type -> Type) s a = (a -> f a) -> s -> f s
- class (Traversable f, Applicative f) => Identical (f :: Type -> Type)
- data Backwards (f :: k -> Type) (a :: k)
- class Bits b => FiniteBits b
- lft :: Prism (Either a r) (Either b r) a b
- rgt :: Prism (Either r a) (Either r b) a b
- some :: Prism (Maybe a) (Maybe b) a b
- none :: Prism' (Maybe a) ()
- lft_ :: Traversal (Either a r) (Either b r) a b
- rgt_ :: Traversal (Either r a) (Either r b) a b
- some_ :: Traversal (Maybe a) (Maybe b) a b
- none_ :: Traversal' (Maybe a) ()
Stock Lenses
chosen :: Lens (Either a a) (Either b b) a b Source #
Lens on the Left or Right element of an (Either
a a).
at' :: Ord k => k -> Lens' (Map k v) (Maybe v) Source #
Lens providing strict access to a given point of a Map
.
intAt' :: Int -> Lens' (IntMap v) (Maybe v) Source #
Lens providing strict access to a given point of a IntMap
.
Stock Prisms
Stock Grids
bend :: FiniteBits b => Grid' b Bool Source #
A grid from the most significant bit to the least significant bit of a FiniteBits
type.
Big endian order.
lend :: FiniteBits b => Grid' b Bool Source #
A grid from the least significant bit to the most significant bit of a FiniteBits
type.
Little endian order.
Stock Grates
bend' :: FiniteBits b => Grate' b Bool Source #
A grate from the most significant bit to the least significant bit of a FiniteBits
type.
Big endian order.
lend' :: FiniteBits b => Grate' b Bool Source #
A grate from the least significant bit to the most significant bit of a FiniteBits
type.
Little endian order.
Stock Traversals
bend_ :: FiniteBits b => Traversal' b Bool Source #
A traversal from the most significant bit to the least significant bit of a FiniteBits
type.
Big endian order.
lend_ :: FiniteBits b => Traversal' b Bool Source #
A traversal from the least significant bit to the most significant bit of a FiniteBits
type.
Little endian order.
Stock SECs
mapped :: Functor f => Setter (f a) (f a') a a' Source #
An SEC referencing the parameter of a functor.
Lens Combinators
alongside :: Functor f => LensLike (AlongsideLeft f b1) s0 t0 a0 b0 -> LensLike (AlongsideRight f t0) s1 t1 a1 b1 -> LensLike f (s0, s1) (t0, t1) (a0, a1) (b0, b1) #
alongside :: Lens s0 t0 a0 b0 -> Lens s1 t1 a1 b1 -> Lens (s0, s1) (t0, t1) (a0, a1) (b0, b1)
alongside :: Getter s0 t0 a0 b0 -> Getter s1 t1 a1 b1 -> Getter (s0, s1) (t0, t1) (a0, a1) (b0, b1)
Given two lens/getter families, make a new lens/getter on their product.
backwards :: LensLike (Backwards f) s t a b -> LensLike f s t a b #
backwards :: Traversal s t a b -> Traversal s t a b backwards :: Fold s t a b -> Fold s t a b
Given a traversal or fold, reverse the order that elements are traversed.
backwards :: Lens s t a b -> Lens s t a b backwards :: Getter s t a b -> Getter s t a b backwards :: Setter s t a b -> Setter s t a b
No effect on lenses, getters or setters.
beside :: (Applicative f, Functor g) => AdapterLike f g s0 t0 a b -> AdapterLike f g s1 t1 a b -> AdapterLike f g (s0, s1) (t0, t1) a b #
beside :: Grid s1 t1 a b -> Grid s2 t2 a b -> Grid (s1, s2) (t1, t2) a b
Given two grids referencing a type c
, create a grid on the pair referencing c
.
beside' :: Functor g => GrateLike g s0 t0 a b -> GrateLike g s1 t1 a b -> GrateLike g (s0, s1) (t0, t1) a b #
beside' :: Grate s0 t0 a b -> Grate s1 t1 a b -> Grate (s0, s1) (t0, t1) a b
beside' :: Resetter s0 t0 a b -> Resetter s1 t1 a b -> Resetter (s0, s1) (t0, t1) a b
Given two grates/resetters referencing a type c
, create a grate/resetter on the pair referencing c
.
beside_ :: Applicative f => LensLike f s0 t0 a b -> LensLike f s1 t1 a b -> LensLike f (s0, s1) (t0, t1) a b #
beside_ :: Traversal s0 t0 a b -> Traversal s1 t1 a b -> Traversal (s0, s1) (t0, t1) a b
beside_ :: Fold s0 t0 a b -> Fold s1 t1 a b -> Fold (s0, s1) (t0, t1) a b
beside_ :: Setter s0 t0 a b -> Setter s1 t1 a b -> Setter (s0, s1) (t0, t1) a b
Given two traversals/folds/setters referencing a type c
, create a traversal/fold/setter on the pair referencing c
.
choosing :: Functor f => LensLike f s0 t0 a b -> LensLike f s1 t1 a b -> LensLike f (Either s0 s1) (Either t0 t1) a b #
choosing :: Lens s0 t0 a b -> Lens s1 t1 a b -> Lens (Either s0 s1) (Either t0 t1) a b
choosing :: Traversal s0 t0 a b -> Traversal s1 t1 a b -> Traversal (Either s0 s1) (Either t0 t1) a b
choosing :: Getter s0 t0 a b -> Getter s1 t1 a b -> Getter (Either s0 s1) (Either t0 t1) a b
choosing :: Fold s0 t0 a b -> Fold s1 t1 a b -> Fold (Either s0 s1) (Either t0 t1) a b
choosing :: Setter s0 t0 a b -> Setter s1 t1 a b -> Setter (Either s0 s1) (Either t0 t1) a b
Given two lens/traversal/getter/fold/setter families with the same substructure, make a new lens/traversal/getter/fold/setter on Either
.
from :: (Functor f, Functor g) => AdapterLike (FromF (g s -> f t) (f b) g) (FromG (f b) f) b a t s -> AdapterLike f g s t a b #
from :: Adapter b a t s -> Adapter s t a b
Reverses the direction of an adapter.
from :: Getter b a t s -> Reviewer s t a b from :: Reviewer b a t s -> Getter s t a b
Changes a Getter into a Reviewer and vice versa.
Types
data AlongsideLeft (f :: Type -> Type) b a #
Instances
Functor f => Functor (AlongsideLeft f a) | |
Defined in Lens.Family.Stock fmap :: (a0 -> b) -> AlongsideLeft f a a0 -> AlongsideLeft f a b # (<$) :: a0 -> AlongsideLeft f a b -> AlongsideLeft f a a0 # | |
Phantom f => Phantom (AlongsideLeft f a) | |
Defined in Lens.Family.Stock coerce :: AlongsideLeft f a a0 -> AlongsideLeft f a b |
data AlongsideRight (f :: Type -> Type) a b #
Instances
Functor f => Functor (AlongsideRight f a) | |
Defined in Lens.Family.Stock fmap :: (a0 -> b) -> AlongsideRight f a a0 -> AlongsideRight f a b # (<$) :: a0 -> AlongsideRight f a b -> AlongsideRight f a a0 # | |
Phantom f => Phantom (AlongsideRight f a) | |
Defined in Lens.Family.Stock coerce :: AlongsideRight f a a0 -> AlongsideRight f a b |
Re-exports
type Grate' s a = forall g. Functor g => GrateLike' g s a Source #
type Traversal s t a b = forall f. Applicative f => LensLike f s t a b Source #
type Traversal' s a = forall f. Applicative f => LensLike' f s a Source #
data Backwards (f :: k -> Type) (a :: k) #
The same functor, but with an Applicative
instance that performs
actions in the reverse order.
Instances
class Bits b => FiniteBits b #
The FiniteBits
class denotes types with a finite, fixed number of bits.
Since: base-4.7.0.0
Instances
FiniteBits Bool | Since: base-4.7.0.0 |
Defined in Data.Bits | |
FiniteBits Int | Since: base-4.6.0.0 |
Defined in Data.Bits | |
FiniteBits Word | Since: base-4.6.0.0 |
Defined in Data.Bits | |
FiniteBits a => FiniteBits (Identity a) | Since: base-4.9.0.0 |
Defined in Data.Functor.Identity finiteBitSize :: Identity a -> Int # countLeadingZeros :: Identity a -> Int # countTrailingZeros :: Identity a -> Int # | |
FiniteBits a => FiniteBits (Down a) | Since: base-4.14.0.0 |
Defined in Data.Ord finiteBitSize :: Down a -> Int # countLeadingZeros :: Down a -> Int # countTrailingZeros :: Down a -> Int # | |
FiniteBits a => FiniteBits (Const a b) | Since: base-4.9.0.0 |
Defined in Data.Functor.Const finiteBitSize :: Const a b -> Int # countLeadingZeros :: Const a b -> Int # countTrailingZeros :: Const a b -> Int # |