Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 109 additions & 16 deletions bookkeeper.cabal
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
-- This file has been generated from package.yaml by hpack version 0.20.0.
cabal-version: 1.12

-- This file has been generated from package.yaml by hpack version 0.36.0.
--
-- see: https://github.com/sol/hpack
--
-- hash: 919c9bd63ad7efe1c1c555270f3970af8bead66e26cb198aca395daf0d1abc13
-- hash: ecef739b4b4c0da0f5492732943ec779bf3f3c16e66e4ac1248d97f94126313a

name: bookkeeper
version: 0.2.5
version: 0.2.6
synopsis: Anonymous records and overloaded labels
description: Please see README.md for more information and examples.
category: Data Structures, Records
Expand All @@ -16,14 +18,13 @@ maintainer: jkarni@gmail.com
copyright: (c) Julian K. Arni
license: BSD3
license-file: LICENSE
tested-with: GHC == 8.0.1, GHC == 8.2.1
tested-with:
GHC == 8.0.1, GHC == 8.2.1
build-type: Simple
cabal-version: >= 1.10

extra-source-files:
CHANGELOG.md
package.yaml
README.md
package.yaml

source-repository head
type: git
Expand All @@ -32,10 +33,33 @@ source-repository head
library
hs-source-dirs:
src
default-extensions: AutoDeriveTypeable ConstraintKinds DataKinds DefaultSignatures DeriveFunctor DeriveGeneric DeriveFoldable DeriveTraversable FlexibleContexts FlexibleInstances FunctionalDependencies GADTs MultiParamTypeClasses KindSignatures TypeInType OverloadedStrings RankNTypes ScopedTypeVariables TypeApplications TypeFamilies TypeOperators OverloadedLabels MagicHash
default-extensions:
AutoDeriveTypeable
ConstraintKinds
DataKinds
DefaultSignatures
DeriveFunctor
DeriveGeneric
DeriveFoldable
DeriveTraversable
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
MultiParamTypeClasses
KindSignatures
TypeInType
OverloadedStrings
RankNTypes
ScopedTypeVariables
TypeApplications
TypeFamilies
TypeOperators
OverloadedLabels
MagicHash
ghc-options: -Wall
build-depends:
base >=4.9 && <4.11
base >=4.9 && <4.13
, data-default-class
, type-level-sets
exposed-modules:
Expand All @@ -51,7 +75,7 @@ executable readme
exec
ghc-options: -Wall -pgmL markdown-unlit -fno-warn-unused-top-binds
build-depends:
base >=4.9 && <4.11
base >=4.9 && <4.13
, bookkeeper
, data-default-class
, markdown-unlit
Expand All @@ -63,11 +87,34 @@ test-suite doctest
main-is: Doctest.hs
hs-source-dirs:
doctest
default-extensions: AutoDeriveTypeable ConstraintKinds DataKinds DefaultSignatures DeriveFunctor DeriveGeneric DeriveFoldable DeriveTraversable FlexibleContexts FlexibleInstances FunctionalDependencies GADTs MultiParamTypeClasses KindSignatures TypeInType OverloadedStrings RankNTypes ScopedTypeVariables TypeApplications TypeFamilies TypeOperators OverloadedLabels MagicHash
default-extensions:
AutoDeriveTypeable
ConstraintKinds
DataKinds
DefaultSignatures
DeriveFunctor
DeriveGeneric
DeriveFoldable
DeriveTraversable
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
MultiParamTypeClasses
KindSignatures
TypeInType
OverloadedStrings
RankNTypes
ScopedTypeVariables
TypeApplications
TypeFamilies
TypeOperators
OverloadedLabels
MagicHash
ghc-options: -Wall
build-depends:
Glob >=0.7 && <0.9
, base >=4.9 && <4.11
, base >=4.9 && <4.13
, data-default-class
, doctest >=0.9 && <0.12
, type-level-sets
Expand All @@ -81,11 +128,34 @@ test-suite spec
main-is: Spec.hs
hs-source-dirs:
test
default-extensions: AutoDeriveTypeable ConstraintKinds DataKinds DefaultSignatures DeriveFunctor DeriveGeneric DeriveFoldable DeriveTraversable FlexibleContexts FlexibleInstances FunctionalDependencies GADTs MultiParamTypeClasses KindSignatures TypeInType OverloadedStrings RankNTypes ScopedTypeVariables TypeApplications TypeFamilies TypeOperators OverloadedLabels MagicHash
default-extensions:
AutoDeriveTypeable
ConstraintKinds
DataKinds
DefaultSignatures
DeriveFunctor
DeriveGeneric
DeriveFoldable
DeriveTraversable
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
MultiParamTypeClasses
KindSignatures
TypeInType
OverloadedStrings
RankNTypes
ScopedTypeVariables
TypeApplications
TypeFamilies
TypeOperators
OverloadedLabels
MagicHash
ghc-options: -Wall
build-depends:
QuickCheck >=2.8 && <2.11
, base >=4.9 && <4.11
, base >=4.9 && <4.13
, bookkeeper
, data-default-class
, hspec >2 && <3
Expand All @@ -100,10 +170,33 @@ benchmark bench
main-is: Main.hs
hs-source-dirs:
bench
default-extensions: AutoDeriveTypeable ConstraintKinds DataKinds DefaultSignatures DeriveFunctor DeriveGeneric DeriveFoldable DeriveTraversable FlexibleContexts FlexibleInstances FunctionalDependencies GADTs MultiParamTypeClasses KindSignatures TypeInType OverloadedStrings RankNTypes ScopedTypeVariables TypeApplications TypeFamilies TypeOperators OverloadedLabels MagicHash
default-extensions:
AutoDeriveTypeable
ConstraintKinds
DataKinds
DefaultSignatures
DeriveFunctor
DeriveGeneric
DeriveFoldable
DeriveTraversable
FlexibleContexts
FlexibleInstances
FunctionalDependencies
GADTs
MultiParamTypeClasses
KindSignatures
TypeInType
OverloadedStrings
RankNTypes
ScopedTypeVariables
TypeApplications
TypeFamilies
TypeOperators
OverloadedLabels
MagicHash
ghc-options: -Wall -Wall
build-depends:
base >=4.9 && <4.11
base >=4.9 && <4.13
, bookkeeper
, criterion
, data-default-class
Expand Down
6 changes: 3 additions & 3 deletions package.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: bookkeeper
version: 0.2.5
version: 0.2.6
synopsis: Anonymous records and overloaded labels
description: Please see README.md for more information and examples.
homepage: http://github.com/turingjump/bookkeeper#readme
Expand All @@ -19,7 +19,7 @@ extra-source-files:
ghc-options: -Wall

dependencies:
- base >= 4.9 && < 4.11
- base >= 4.9 && < 4.21
- type-level-sets
- data-default-class

Expand Down Expand Up @@ -89,6 +89,6 @@ executables:
default-extensions: []
other-modules: []
dependencies:
- base >=4.9 && < 4.11
- base >=4.9 && < 4.21
- bookkeeper
- markdown-unlit
96 changes: 50 additions & 46 deletions src/Bookkeeper.hs
Original file line number Diff line number Diff line change
@@ -1,50 +1,54 @@
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.
--
-- A word of warning: The signatures for most of the functions are quite
-- arcane, even though their behaviour is intuitive.

-- * Initialization
emptyBook

-- * Getters
, Gettable
, (?:)
, get

-- * Setters
, Settable
, set
, (=:)

-- * Modifying
, Modifiable
, modify
, (%:)

-- * Deleting
, delete

-- * Types
, Book
, (:=>)
, Key

-- * From Haskell record
, fromRecord

-- * Re-exports
, (&)

) where
( -- * 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.
--
-- A word of warning: The signatures for most of the functions are quite
-- arcane, even though their behaviour is intuitive.

-- * Initialization
emptyBook,

-- * Getters
Gettable,
(?:),
get,

-- * Setters
Settable,
set,
(=:),

-- * Modifying
Modifiable,
modify,
(%:),

-- * Deleting
delete,

-- * Types
Book,
(:=>),
Key,

-- * From Haskell record
fromRecord,

-- * Value level
toValue,
hasEntries,

-- * Re-exports
(&),
)
where

import Bookkeeper.Internal
import Data.Function
Loading