All Projects → HeinrichApfelmus → vault

HeinrichApfelmus / vault

Licence: BSD-3-Clause license
A typed, persistent store for values of arbitrary types

Programming Languages

c
50402 projects - #5 most used programming language
haskell
3896 projects

Projects that are alternatives of or similar to vault

Babel Plugin Runtyper
⚡️ Runtime type-checker for JavaScript
Stars: ✭ 117 (+112.73%)
Mutual labels:  type-safety
Squid
Squid – type-safe metaprogramming and compilation framework for Scala
Stars: ✭ 172 (+212.73%)
Mutual labels:  type-safety
Truth
A Domain Representation Language
Stars: ✭ 23 (-58.18%)
Mutual labels:  type-safety
Returns
Make your functions return something meaningful, typed, and safe!
Stars: ✭ 2,015 (+3563.64%)
Mutual labels:  type-safety
Vue Literal Compiler
A Vue Compiler that allows you compile your string literals to render functions at build time and write components in SFC paradigm
Stars: ✭ 158 (+187.27%)
Mutual labels:  type-safety
Ts Toolbelt
ts-toolbelt is the largest, and most tested type library available right now, featuring +200 utilities. Our type collection packages some of the most advanced mapped types, conditional types, and recursive types on the market.
Stars: ✭ 3,099 (+5534.55%)
Mutual labels:  type-safety
Purescript Spec
Testing framework for Purescript
Stars: ✭ 108 (+96.36%)
Mutual labels:  type-safety
kanji
A strongly typed GraphQL API framework
Stars: ✭ 12 (-78.18%)
Mutual labels:  type-safety
Orm Lite
Header-Only, Strong-Typed, Compile-time Object Relation Mapping (ORM) in Modern C++ :-)
Stars: ✭ 164 (+198.18%)
Mutual labels:  type-safety
Dry Schema
Coercion and validation for data structures
Stars: ✭ 249 (+352.73%)
Mutual labels:  type-safety
Hegel
An advanced static type checker
Stars: ✭ 1,804 (+3180%)
Mutual labels:  type-safety
Quantities
Type-safe physical computations and unit conversions in Idris ⚖ 🌡 ⏲ 🔋 📐
Stars: ✭ 146 (+165.45%)
Mutual labels:  type-safety
Percentage
A percentage type for Swift
Stars: ✭ 225 (+309.09%)
Mutual labels:  type-safety
Typecov
Track missing type coverage to ensure type safety
Stars: ✭ 128 (+132.73%)
Mutual labels:  type-safety
request-parser
Small PHP Library for type-safe input handling
Stars: ✭ 53 (-3.64%)
Mutual labels:  type-safety
Typical
Typical: Fast, simple, & correct data-validation using Python 3 typing.
Stars: ✭ 111 (+101.82%)
Mutual labels:  type-safety
Typestrict
ESLint config focused on maximizing type safety 💪
Stars: ✭ 182 (+230.91%)
Mutual labels:  type-safety
regbits
C++ templates for type-safe bit manipulation
Stars: ✭ 53 (-3.64%)
Mutual labels:  type-safety
Unchained
A fully type safe, compile time only units library.
Stars: ✭ 70 (+27.27%)
Mutual labels:  type-safety
Dimensioned
Compile-time dimensional analysis for various unit systems using Rust's type system.
Stars: ✭ 235 (+327.27%)
Mutual labels:  type-safety

Build Status

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.

Installation

The whole thing is available on hackage, so you just have to type

cabal update
cabal install vault

Feedback

Use the issue tracker or send an email to the maintainer.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].