embraced the monad of it all
audit_wrap(data) : put values in the bubble
audit_peek(x, fn, ...) : log fn(data) but don't update data
audit_poke(x, fn, ...) : log fn(data) and set data <- fn(data)
audit_unwrap(x) : pull data out of bubble
add a skeleton here at some point
1 day ago