Bookkeeper
emptyBook
(?:)
get
set
(=:)
modify
(%:)
delete
type Book a
type a :=> b
data Key a
(&)
data ChooseFirst a