A typed, persistent store for values of arbitrary types, ported from the Haskell Vault library by Heinrich Apfelmus.
Think of a vault like a map that can store any value in a type-safe manner. The first step is to generate a new Key a
value using the newKey
function. Then, use insert
, lookup
, delete
, etc., just like their Data.Map analogs.
data Vault
data Key a
newKey :: forall a. Effect (Key a)
empty :: Vault
insert :: forall a. Key a -> a -> Vault -> Vault
lookup :: forall a. Key a -> Vault -> Maybe a
delete :: forall a. Key a -> Vault -> Vault
adjust :: forall a. (a -> a) -> Key a -> Vault -> Vault
Install vault
with Spago:
spago install vault
If vault
is not included in your package set, include it in packages.dhall
, e.g.
let upstream = -- <package set URL here>
in upstream
with vault =
{ dependencies =
[ "effect"
, "maybe"
, "ordered-collections"
, "prelude"
, "refs"
, "unique"
]
, repo =
"https://github.com/rowtype-yoga/purescript-vault.git"
, version =
"v1.0.0"
}
The quick start hasn't been written yet (contributions are welcome!). The quick start covers a common, minimal use case for the library, whereas longer examples and tutorials are kept in the docs directory.
Vault documentation is stored in a few places:
- Module documentation is published on Pursuit.
- Written documentation is kept in the docs directory.
- Usage examples can be found in the test suite.
If you get stuck, there are several ways to get help:
- Open an issue if you have encountered a bug or problem.
- Ask general questions on the PureScript Discourse forum or the PureScript Discord chat.
You can contribute to Vault in several ways:
-
If you encounter a problem or have a question, please open an issue. We'll do our best to work with you to resolve or answer it.
-
If you would like to contribute code, tests, or documentation, please read the contributor guide. It's a short, helpful introduction to contributing to this library, including development instructions.
-
If you have written a library, tutorial, guide, or other resource based on this package, please share it on the PureScript Discourse! Writing libraries and learning resources are a great way to help this library succeed.