Safe Haskell | None |
---|---|
Language | Haskell98 |
Predefined references for commonly used data structures and reference generators.
When defining lenses one should use the more general types. For instance Lens
instead of the more strict Lens'
. This way references with different m1
and m2
monads can be combined if there is a monad m'
for MMorph m1 m'
and MMorph m2 m'
.
- self :: Lens a b a b
- emptyRef :: Simple RefPlus s a
- atArg :: Eq a => a -> Simple Lens (a -> b) b
- just :: Prism (Maybe a) (Maybe b) a b
- right :: Prism (Either a b) (Either a c) b c
- left :: Prism (Either a c) (Either b c) a b
- anyway :: Lens (Either a a) (Either b b) a b
- both :: Traversal (a, a) (b, b) a b
- atHead :: Simple Lens [a] (Maybe a)
- headElem :: Simple Partial [a] a
- _tail :: Simple Partial [a] [a]
- dropped :: Int -> Simple Partial [a] [a]
- view :: Iso [a] [b] (Maybe (a, [a])) (Maybe (b, [b]))
- text :: Simple Iso String Text
- reversed :: Iso [a] [b] [a] [b]
- _numerator :: Integral a => Simple Lens (Ratio a) a
- _denominator :: Integral a => Simple Lens (Ratio a) a
- _realPart :: RealFloat a => Simple Lens (Complex a) a
- _imagPart :: RealFloat a => Simple Lens (Complex a) a
- _polar :: RealFloat a => Simple Lens (Complex a) (a, a)
- data Console = Console
- consoleLine :: Simple IOLens Console String
- fileContent :: Simple IOLens FilePath (Maybe String)
- mvar :: Simple IOLens (MVar a) a
- modifyMVarMasked_ :: (Monad m, Morph IO m, MorphControl IO m) => MVar a -> (a -> m a) -> m ()
- mask_ :: MorphControl IO m => m a -> m a
- onException :: MorphControl IO m => m a -> m b -> m a
- chan :: Simple IOLens (Chan a) a
- ioref :: Simple IOLens (IORef a) a
- state :: forall s m a. Monad m => Simple (StateLens s m) a s
- stRef :: Simple (STLens s) (STRef s a) a
- whereOf :: (RefMonads w r, MonadPlus r) => (i -> Bool) -> IndexedReference i w r MU MU s s a a -> IndexedReference i w r MU MU s s a a
Trivial references
emptyRef :: Simple RefPlus s a Source #
An empty reference that do not traverse anything
emptyRef &+& a = a &+& emptyRef = a
a & emptyRef = emptyRef & a = emptyRef
References for simple data structures
atArg :: Eq a => a -> Simple Lens (a -> b) b Source #
An indexed lens for accessing points a function
right :: Prism (Either a b) (Either a c) b c Source #
A partial lens to access the right option of an Either
left :: Prism (Either a c) (Either b c) a b Source #
A partial lens to access the left option of an Either
anyway :: Lens (Either a a) (Either b b) a b Source #
Access the value that is in the left or right state of an Either
text :: Simple Iso String Text Source #
An isomorphism between the list and text representation of a string
reversed :: Iso [a] [b] [a] [b] Source #
Accesses the reversed version of a list
'turn' reversed == reversed
_realPart :: RealFloat a => Simple Lens (Complex a) a Source #
Accesses the real part of a complex number
_imagPart :: RealFloat a => Simple Lens (Complex a) a Source #
Accesses the imaginary part of a complex number
_polar :: RealFloat a => Simple Lens (Complex a) (a, a) Source #
Accesses the polar representation of a complex number
Stateful references
consoleLine :: Simple IOLens Console String Source #
Interacts with a line of text on the console. Values set are printed, getting is reading from the console.
fileContent :: Simple IOLens FilePath (Maybe String) Source #
Reference to the contents of the file. Not thread-safe.
An empty file's content is Just ""
while a non-existent file's is Nothing
Creates a temporary file to store the result.
mvar :: Simple IOLens (MVar a) a Source #
Access a value inside an MVar. Setting is not atomic. If there is two supplier that may set the accessed value, one may block and can corrupt the following updates.
Reads and updates are done in sequence, always using consistent data.
modifyMVarMasked_ :: (Monad m, Morph IO m, MorphControl IO m) => MVar a -> (a -> m a) -> m () Source #
Generalized version of modifyMVarMasked_
.
onException :: MorphControl IO m => m a -> m b -> m a Source #
Generalized version of onException
.