Stability | provisional |
---|---|
Maintainer | Hugo Pacheco <hpacheco@nii.ac.jp> |
Safe Haskell | None |
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'|
- evalSt :: State s a -> s -> a
- readSt :: MonadState s m => m s
- writeSt :: MonadState s m => s -> m ()
- runSt :: State s a -> s -> (a, s)
- data Lens s v = Lens {}
- type PutM e st a = ReaderT (e, Bool) (State (st, Bool)) a
- type Get s v = s -> Maybe v
- type Put st e s v = Maybe s -> v -> PutM e st s
- type Create st e s v = v -> PutM e st s
- data Putlens st e s v = Putlens {}
- type Putlens' s v = Putlens () s s v
- getM :: Putlens st e s v -> Get s v
- putM :: Putlens st e s v -> Put st e s v
- evalPutM :: PutM e st s -> (e, Bool) -> (st, Bool) -> s
- runPutM :: PutM e st s -> (e, Bool) -> (st, Bool) -> (s, Bool)
- withPutM :: (st -> e -> a) -> PutM e st a
- simplelens2put :: Lens' s v -> Putlens st e s v
- put2lens :: Eq v => Putlens' s v -> Lens s v
- get' :: Eq v => Putlens' s v -> s -> v
- put' :: Eq v => Putlens' s v -> s -> v -> s
- getput' :: Eq v => Putlens' s v -> s -> (v, v -> s)
Documentation
readSt :: MonadState s m => m sSource
writeSt :: MonadState s m => s -> m ()Source
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
Framework for put-based lenses
evalPutM :: PutM e st s -> (e, Bool) -> (st, Bool) -> sSource
Runs a putlens for a particular environment and state
withPutM :: (st -> e -> a) -> PutM e st aSource
Computes a value of type |a| using the current state and environment
simplelens2put :: Lens' s v -> Putlens st e s vSource