fclabels-0.2.0: First class record labelsSource codeContentsIndex
Data.Record.Label
Contents
Getter, setter and modifier types.
Label type.
Bidirectional composition.
State monadic label operations.
Convenient label for list indexing.
Derive labels using Template Haskell.
Synopsis
type Getter a b = a -> b
type Setter a b = b -> a -> a
type Modifier a b = (b -> b) -> a -> a
data a :-> b = Label {
lget :: Getter a b
lset :: Setter a b
lmod :: Modifier a b
}
mkModifier :: Getter a b -> Setter a b -> Modifier a b
mkLabel :: Getter a b -> Setter a b -> a :-> b
(%) :: (g :-> a) -> (f :-> g) -> f :-> a
class Lens f where
lmap :: (a -> b, b -> a) -> f a -> f b
getM :: MonadState s m => (s :-> b) -> m b
setM :: MonadState s m => (s :-> b) -> b -> m ()
modM :: MonadState s m => (s :-> b) -> (b -> b) -> m ()
(=:) :: MonadState s m => (s :-> b) -> b -> m ()
enterM :: MonadState s m => (s :-> b) -> State b b1 -> m b1
enterMT :: (MonadState s (t m), MonadTrans t, Monad m) => (s :-> b) -> StateT b m a -> t m a
bothM :: MonadState s m => (s :-> b) -> State b b1 -> m (b, b1)
localM :: MonadState s m => (s :-> b) -> m b1 -> m b1
withM :: MonadState s m => (s :-> b) -> State b a -> m b1 -> m b1
list :: Int -> [a] :-> a
mkLabels :: [Name] -> Q [Dec]
Getter, setter and modifier types.
type Getter a b = a -> bSource
type Setter a b = b -> a -> aSource
type Modifier a b = (b -> b) -> a -> aSource
Label type.
data a :-> b Source
Constructors
Label
lget :: Getter a b
lset :: Setter a b
lmod :: Modifier a b
show/hide Instances
Lens (:-> f)
mkModifier :: Getter a b -> Setter a b -> Modifier a bSource
Create a modifier function out of a getter and a setter.
mkLabel :: Getter a b -> Setter a b -> a :-> bSource
Smart constructor for Labels, the modifier will be computed based on getter and setter.
Bidirectional composition.
(%) :: (g :-> a) -> (f :-> g) -> f :-> aSource
class Lens f whereSource
Methods
lmap :: (a -> b, b -> a) -> f a -> f bSource
show/hide Instances
Lens (:-> f)
State monadic label operations.
getM :: MonadState s m => (s :-> b) -> m bSource
Get a value out of state pointed to by the specified label.
setM :: MonadState s m => (s :-> b) -> b -> m ()Source
Set a value somewhere in state pointed to by the specified label.
modM :: MonadState s m => (s :-> b) -> (b -> b) -> m ()Source
Modify a value with a function somewhere in state pointed to by the specified label.
(=:) :: MonadState s m => (s :-> b) -> b -> m ()Source
Alias for setM that reads like an assignment.
enterM :: MonadState s m => (s :-> b) -> State b b1 -> m b1Source
enterMT :: (MonadState s (t m), MonadTrans t, Monad m) => (s :-> b) -> StateT b m a -> t m aSource
bothM :: MonadState s m => (s :-> b) -> State b b1 -> m (b, b1)Source
localM :: MonadState s m => (s :-> b) -> m b1 -> m b1Source
withM :: MonadState s m => (s :-> b) -> State b a -> m b1 -> m b1Source
Convenient label for list indexing.
list :: Int -> [a] :-> aSource
Derive labels using Template Haskell.
mkLabels :: [Name] -> Q [Dec]Source
Produced by Haddock version 2.4.2