File: README.md

package info (click to toggle)
haskell-vault 0.3.1.4-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 100 kB
  • sloc: ansic: 147; haskell: 40; makefile: 2
file content (47 lines) | stat: -rwxr-xr-x 1,559 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
[![Build Status](https://travis-ci.org/HeinrichApfelmus/vault.png)](https://travis-ci.org/HeinrichApfelmus/vault)


*Vault* is a tiny library that provides a single data structure called *vault*.

A *vault* is a type-safe, persistent storage for values of arbitrary types. Like `IORef`, I want to be able to store values of any type in it, but unlike `IORef`, I want the storage space to behave like a persistent, first-class data structure, as appropriate for a purely functional language.

It is analogous to a bank vault, where you can access different bank boxes with different keys; hence the name.

In other words, a vault is an abstract data type with the following basic signature

    data Key a
    data Vault

    newKey :: IO (Key a)
    empty  :: Vault
    lookup :: Key a -> Vault -> Maybe a
    insert :: Key a -> a -> Vault -> Vault
    delete :: Key a -> Vault -> Vault

A few common functions for finite maps, like `adjust` and `union`, are provided as well.


This library was created thanks to the feedback on my blog post [Vault - a persistent store for values of arbitrary types][1].

  [1]: http://apfelmus.nfshost.com/blog/2011/09/04-vault.html


Installation
============
The whole thing is [available on hackage][hackage], so you just have to type

    cabal update
    cabal install vault

  [hackage]: http://hackage.haskell.org/package/vault

Feedback
========
Use the [issue tracker][2] or send an [email to the maintainer][3].

  [2]: https://github.com/HeinrichApfelmus/vault/issues
  [3]: mailto:apfelmus@quantentunnel.de