<commit_before>*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 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



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, so you just have to type

    cabal update
    cabal install vault

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

  [2]: https://github.com/HeinrichApfelmus/vault/issues
  [3]: mailto:<EMAIL>



<commit_msg>Add adjust and union to Readme.md<commit_after>*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 signature

    data Key a
    data Vault

    newKey :: IO (Key a)
    empty  :: Vault
    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



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, so you just have to type

    cabal update
    cabal install vault

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

  [2]: https://github.com/HeinrichApfelmus/vault/issues
  [3]: mailto:<EMAIL>




{'fraction_non_alphanumeric': 0.09635416666666667, 'fraction_numerical': 0.010416666666666666, 'mean_word_length': 3.3301127214170694, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 25, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2385612', 'n_tokens_mistral': 796, 'n_tokens_neox': 760, 'n_words': 382}