Bookkeeper
emptyBook
type Gettable field book val
(?:)
get
type Settable field val old new
set
(=:)
type Modifiable field val val' old new
modify
(%:)
delete
type Book a
type a :=> b
data Key a
(&)