Agda-2.6.20240731: A dependently typed functional programming language and proof assistant
Safe HaskellNone
LanguageHaskell2010

Agda.Utils.Lens

Description

A cut-down implementation of lenses, with names taken from Edward Kmett's lens package.

Synopsis
  • (.=) :: MonadState o m => Lens' o i -> i -> m ()
  • set :: Lens' o i -> LensSet o i
  • type Lens' o i = forall (f :: Type -> Type). Functor f => (i -> f i) -> o -> f o
  • (^.) :: o -> Lens' o i -> i
  • over :: Lens' o i -> LensMap o i
  • key :: Ord k => k -> Lens' (Map k v) (Maybe v)
  • type LensGet o i = o -> i
  • type LensSet o i = i -> o -> o
  • type LensMap o i = (i -> i) -> o -> o
  • lFst :: forall a b f. Functor f => (a -> f a) -> (a, b) -> f (a, b)
  • lSnd :: forall a b f. Functor f => (b -> f b) -> (a, b) -> f (a, b)
  • iso :: (o -> i) -> (i -> o) -> Lens' o i
  • focus :: forall (m :: Type -> Type) o i a. Monad m => Lens' o i -> StateT i m a -> StateT o m a
  • use :: MonadState o m => Lens' o i -> m i
  • (%=) :: MonadState o m => Lens' o i -> (i -> i) -> m ()
  • (%==) :: MonadState o m => Lens' o i -> (i -> m i) -> m ()
  • (%%=) :: MonadState o m => Lens' o i -> (i -> m (i, r)) -> m r
  • locallyState :: MonadState o m => Lens' o i -> (i -> i) -> m r -> m r
  • view :: MonadReader o m => Lens' o i -> m i
  • locally :: MonadReader o m => Lens' o i -> (i -> i) -> m a -> m a
  • locally' :: ((o -> o) -> m a -> m a) -> Lens' o i -> (i -> i) -> m a -> m a
  • contains :: Ord k => k -> Lens' (Set k) Bool
  • (<&>) :: Functor f => f a -> (a -> b) -> f b

Documentation

(.=) :: MonadState o m => Lens' o i -> i -> m () infix 4 Source #

Write a part of the state.

set :: Lens' o i -> LensSet o i Source #

Set inner part i of structure o as designated by Lens' o i.

type Lens' o i = forall (f :: Type -> Type). Functor f => (i -> f i) -> o -> f o Source #

Van Laarhoven style homogeneous lenses. Mnemoic: "Lens outer inner", same type argument order as 'get :: o -> i'.

(^.) :: o -> Lens' o i -> i infixl 8 Source #

Get inner part i of structure o as designated by Lens' o i.

over :: Lens' o i -> LensMap o i Source #

Modify inner part i of structure o using a function i -> i.

key :: Ord k => k -> Lens' (Map k v) (Maybe v) Source #

Access a map value at a given key.

type LensGet o i = o -> i Source #

type LensSet o i = i -> o -> o Source #

type LensMap o i = (i -> i) -> o -> o Source #

lFst :: forall a b f. Functor f => (a -> f a) -> (a, b) -> f (a, b) Source #

lSnd :: forall a b f. Functor f => (b -> f b) -> (a, b) -> f (a, b) Source #

iso :: (o -> i) -> (i -> o) -> Lens' o i Source #

Build a lens out of an isomorphism.

focus :: forall (m :: Type -> Type) o i a. Monad m => Lens' o i -> StateT i m a -> StateT o m a Source #

Focus on a part of the state for a stateful computation.

use :: MonadState o m => Lens' o i -> m i Source #

Read a part of the state.

(%=) :: MonadState o m => Lens' o i -> (i -> i) -> m () infix 4 Source #

Modify a part of the state.

(%==) :: MonadState o m => Lens' o i -> (i -> m i) -> m () infix 4 Source #

Modify a part of the state monadically.

(%%=) :: MonadState o m => Lens' o i -> (i -> m (i, r)) -> m r infix 4 Source #

Modify a part of the state monadically, and return some result.

locallyState :: MonadState o m => Lens' o i -> (i -> i) -> m r -> m r Source #

Modify a part of the state locally.

view :: MonadReader o m => Lens' o i -> m i Source #

Ask for part of read-only state.

locally :: MonadReader o m => Lens' o i -> (i -> i) -> m a -> m a Source #

Modify a part of the state in a subcomputation.

locally' :: ((o -> o) -> m a -> m a) -> Lens' o i -> (i -> i) -> m a -> m a Source #

contains :: Ord k => k -> Lens' (Set k) Bool Source #

Focus on given element in a set.

(<&>) :: Functor f => f a -> (a -> b) -> f b #