Copyright | (C) 2013 Hugo Pacheco |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Hugo Pacheco <hpacheco@nii.ac.jp> |
Stability | provisional |
Safe Haskell | None |
Language | Haskell98 |
General framework for put-based lenses.
- newtype GetPut = GetPut Bool
- newtype PutGet = PutGet Bool
- testGetPut :: GetPut -> Bool
- testPutGet :: PutGet -> Bool
- data LensM m s v = LensM {}
- type Lens s v = LensM Identity s v
- simpleput :: Lens s v -> s -> v -> s
- simplecreate :: Lens s v -> v -> s
- type PutM m a = ReaderT GetPut (WriterT PutGet m) a
- type Get s v = s -> Maybe v
- type Put m s v = Maybe s -> v -> PutM m s
- type Create m s v = v -> PutM m s
- data PutlensM m s v = PutlensM {}
- type PutlensMaybeM m s v = PutlensM (MaybeT m) s v
- type PutlensReaderM m e s v = PutlensM (ReaderT e m) s v
- type PutlensStateM m st s v = PutlensM (StateT st m) s v
- type Putlens s v = PutlensM Identity s v
- mapPutM' :: (Monad m, Monad n) => (m a -> n b) -> (forall c. m c -> n c) -> PutM m a -> PutM n b
- mapPutM :: (forall a. m a -> n a) -> PutM m a -> PutM n a
- mapPutlensM :: Monad m => (forall a. m a -> n a) -> PutlensM m s v -> PutlensM n s v
- liftPutM :: Monad m => m s -> PutM m s
- liftPutlensM :: (MonadTrans t, Monad m) => PutlensM m s v -> PutlensM (t m) s v
- getM :: PutlensM m s v -> Get s v
- dom :: PutlensM m s v -> s -> Bool
- putM :: PutlensM m s v -> Put m s v
- evalPutM :: Monad m => PutM m s -> GetPut -> m s
- runPutM :: Monad m => PutM m s -> GetPut -> m (s, PutGet)
- lens2put :: Monad m => LensM m s v -> PutlensM m s v
- simplelens2put :: Monad m => Lens' s v -> PutlensM m s v
- put2lens :: Eq v => Putlens s v -> Lens s v
- put2quicklens :: Eq v => Putlens s v -> Lens s v
- put2quicklensNoGetPut :: Eq v => Putlens s v -> Lens s v
- put2lensNoGetPut :: Eq v => Putlens s v -> Lens s v
- put2lensM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v
- put2quicklensM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v
- put2lensNoGetPutM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v
- put2quicklensNoGetPutM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v
- put2lensM' :: (Monad m, Eq v) => Bool -> Bool -> PutlensM m s v -> LensM m s v
- get' :: Eq v => PutlensM m s v -> s -> v
- put' :: (Monad m, Eq v) => Bool -> Bool -> PutlensM m s v -> s -> v -> m s
- getput' :: (Monad m, Eq v) => Bool -> Bool -> PutlensM m s v -> s -> (v, v -> m s)
- create' :: (Monad m, Eq v) => Bool -> PutlensM m s v -> v -> m s
- put2create :: (Monad m, Eq v) => PutlensM m s v -> PutlensM m s v
- checkGetPut :: (Monad m, Eq v) => PutlensM m s v -> PutlensM m s v
- checkPutGet :: Monad m => PutlensM m s v -> PutlensM m s v
- offGetPut :: Monad m => PutM m s -> PutM m s
- onPutGet :: Monad m => PutM m s -> PutM m s
Documentation
testGetPut :: GetPut -> Bool Source
testPutGet :: PutGet -> Bool Source
Interface for normal lenses
simplecreate :: Lens s v -> v -> s Source
Non-monadic create
function
type PutM m a = ReaderT GetPut (WriterT PutGet m) a Source
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
type PutlensMaybeM m s v = PutlensM (MaybeT m) s v Source
type PutlensReaderM m e s v = PutlensM (ReaderT e m) s v Source
type PutlensStateM m st s v = PutlensM (StateT st m) s v Source
mapPutM' :: (Monad m, Monad n) => (m a -> n b) -> (forall c. m c -> n c) -> PutM m a -> PutM n b Source
Changes the resulting monad of a put computation
mapPutlensM :: Monad m => (forall a. m a -> n a) -> PutlensM m s v -> PutlensM n s v Source
Changes the resulting monad of a putlens
liftPutlensM :: (MonadTrans t, Monad m) => PutlensM m s v -> PutlensM (t m) s v Source
Function lift
applied to the monadic argument of a putlens
lens2put :: Monad m => LensM m s v -> PutlensM m s v Source
Converts a normal lens to a putlens (without explicit failure)
simplelens2put :: Monad m => Lens' s v -> PutlensM m s v Source
Converts a simple lens of the Haskell lens package into a putlens
put2lens :: Eq v => Putlens s v -> Lens s v Source
Converts a putlens to a normal lens, enforcing well-behavedness
put2quicklens :: Eq v => Putlens s v -> Lens s v Source
Converts a putlens to a normal lens but without enforcing PutGet (for unsafe casts)
put2quicklensNoGetPut :: Eq v => Putlens s v -> Lens s v Source
Converts a putlens to a normal lens, without enforcing GetPut
put2lensNoGetPut :: Eq v => Putlens s v -> Lens s v Source
Converts a putlens to a normal lens, without enforcing GetPut
put2lensM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v Source
Converts a monadic putlens to a monadic lens, enforcing well-behavedness
put2quicklensM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v Source
Converts a monadic putlens to a monadic lens but without enforcing PutGet (for unsafe casts)
put2lensNoGetPutM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v Source
Converts a monadic putlens to a monadic lens, without enforcing GetPut
put2quicklensNoGetPutM :: (Monad m, Eq v) => PutlensM m s v -> LensM m s v Source
Converts a monadic putlens to a monadic lens, without enforcing GetPut
put2lensM' :: (Monad m, Eq v) => Bool -> Bool -> PutlensM m s v -> LensM m s v Source
Converts a putlens to a normal lens with a parameter telling to ensure well-behavedness or not (for unsafe casts) Initializes the environment as the original source, the state as empty, the GetPut tag as True and the PutGet tag as False
getput' :: (Monad m, Eq v) => Bool -> Bool -> PutlensM m s v -> s -> (v, v -> m s) Source
The tupled get/put function of a putlens (with PutGet and GetPut flags)
create' :: (Monad m, Eq v) => Bool -> PutlensM m s v -> v -> m s Source
The create function of a putlens (with PutGet flag)
put2create :: (Monad m, Eq v) => PutlensM m s v -> PutlensM m s v Source
Converts a putlens into another putlens that only uses the create function
checkPutGet :: Monad m => PutlensM m s v -> PutlensM m s v Source