bookkeeper alternatives and similar packages
Based on the "bookkeeper" category.
Alternatively, view bookkeeper alternatives based on common mentions on social networks and blogs.
Do you think we are missing an alternative of bookkeeper or a related project?
Popular Comparisons
README
Bookkeeper
Bookkeeper is a new Haskell library that uses the new OverloadedLabels feature of GHC 8 to provide a new take on datatypes and records:
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE OverloadedLabels #-}
import Bookkeeper
jane :: Book '[ "name" :=> String, "age" :=> Int ]
jane = emptyBook
& #name =: "Jane"
& #age =: 30
-- >>> jane
-- Book {age = 30, name = "Jane"}
-- >>> jane ?: #name
-- "Jane"
It bears some similarities to Nikita Volkov's record library, but requires no Template Haskell.
Accesing a field that does not exist is a type error, made nicer with GHCs new custom type errors:
-- >>> jane ?: #address
-- • The provided Book does not contain the field "address"
-- Book type:
-- '["age" ':-> Int, "name" ':-> String]
The order in which fields are inserted or appear in types does not matter. That is, in:
-- type A = Book '[ "field1" :=> Int, "field2" :=> Bool]
-- type B = Book '[ "field2" :=> Bool, "field1" :=> Int ]
Types A
and B
are the same.
You can set, modify, or get fields. See the haddocks for more information.
main :: IO ()
main = return ()