putlenses-0.0.3: Put-based lens library

Stabilityprovisional
MaintainerHugo Pacheco <hpacheco@nii.ac.jp>
Safe HaskellNone

Generics.Putlenses.Putlens

Description

General framework for put-based lenses.

A well-behaved putlens is expected to satisfy two properties: GetPut: |Just v = get l s => s = runPutM (put (Just s) v) e st| PutGet: |s' = runPutM (put s v') e st => Just v' = get s'|

Synopsis

Documentation

evalSt :: State s a -> s -> aSource

readSt :: MonadState s m => m sSource

writeSt :: MonadState s m => s -> m ()Source

runSt :: State s a -> s -> (a, s)Source

data Lens s v Source

Interface for normal lenses

Constructors

Lens 

Fields

get :: s -> v
 
put :: s -> v -> s
 

type PutM e st a = ReaderT (e, Bool) (State (st, Bool)) aSource

Monad for put-based lenses includes an environment, state, and boolean tags that our system will use to ensure GetPut and PutGet

type Get s v = s -> Maybe vSource

type Put st e s v = Maybe s -> v -> PutM e st sSource

type Create st e s v = v -> PutM e st sSource

data Putlens st e s v Source

Framework for put-based lenses

Constructors

Putlens 

Fields

getputM :: s -> (Maybe v, Create st e s v)
 
createM :: Create st e s v
 

type Putlens' s v = Putlens () s s vSource

getM :: Putlens st e s v -> Get s vSource

Forward |get| function

putM :: Putlens st e s v -> Put st e s vSource

Backward |put| function

evalPutM :: PutM e st s -> (e, Bool) -> (st, Bool) -> sSource

Runs a putlens for a particular environment and state

runPutM :: PutM e st s -> (e, Bool) -> (st, Bool) -> (s, Bool)Source

withPutM :: (st -> e -> a) -> PutM e st aSource

Computes a value of type |a| using the current state and environment

put2lens :: Eq v => Putlens' s v -> Lens s vSource

Converts a putlens to a normal lens. Initializes the environment as the original source, the state as empty, the GetPut tag as True and the PutGet tag as False

get' :: Eq v => Putlens' s v -> s -> vSource

put' :: Eq v => Putlens' s v -> s -> v -> sSource

getput' :: Eq v => Putlens' s v -> s -> (v, v -> s)Source