Safe Haskell | None |
---|

A persistent store for values of arbitrary types.

The `Vault`

type in this module is strict in the keys but lazy in the values.

- type Vault = Vault RealWorld
- type Key = Key RealWorld
- empty :: Vault
- newKey :: IO (Key a)
- lookup :: Key a -> Vault -> Maybe a
- insert :: Key a -> a -> Vault -> Vault
- adjust :: (a -> a) -> Key a -> Vault -> Vault
- delete :: Key a -> Vault -> Vault
- union :: Vault -> Vault -> Vault
- type Locker = Locker RealWorld
- lock :: Key a -> a -> Locker
- unlock :: Key a -> Locker -> Maybe a

# Vault

type Vault = Vault RealWorldSource

A persistent store for values of arbitrary types.

This variant is the simplest and creates keys in the `IO`

monad.
See the module Data.Vault.ST if you want to use it with the `ST`

monad instead.

insert :: Key a -> a -> Vault -> VaultSource

Insert a value for a given key. Overwrites any previous value.

adjust :: (a -> a) -> Key a -> Vault -> VaultSource

Adjust the value for a given key if it's present in the vault.