bookkeeper-0.1.0.0: src/Bookkeeper.hs
module Bookkeeper
(
-- * Preamble
-- | The examples here presume the following setup:
--
-- >>> import Data.Char (toUpper)
-- >>> type Person = Book '[ "name" :=> String , "age" :=> Int ]
-- >>> let julian :: Person = emptyBook & #age =: 28 & #name =: "Julian K. Arni"
--
-- The OverloadedLabels and TypeOperators extensions are also required.
-- * Initialization
emptyBook
-- * Getters
, (?:)
, get
-- * Setters
, set
, (=:)
-- * Modifying
, modify
, (%:)
-- * Types
, Book
, (:=>)
, Key
-- * Re-exports
, (&)
-- * For coercion
-- | These types should not be used, but need to be in scope for coercion,
-- which is used when setting or modifying a value.
, ChooseFirst(..)
) where
import Bookkeeper.Internal
import Data.Function