B00.Store
Lazy immutable stores.
These stores provide access to immutable, lazily determined, typed key-value bindings.
The value of a key in a store is defined either:
Once determined the value of a key in the store never changes.
XXX. Maybe move that at the B0 level.
val create : Memo.t -> dir:B00_std.Fpath.t -> binding list -> t
create memo ~dir bs
is a store with predefined bindings bs
. If a key is mentioned more than once in bs
the last binding takes over. The store uses memo
to determine other keys as needed. dir
is a scratch directory used by key determination functions to write memoized file outputs.
val dir : t -> B00_std.Fpath.t
dir s
is the scratch directory of s
. Key determination functions using this directory to write files should do so using nice file name prefixes (e.g. lowercased module or lib names) to avoid name clashes.
val key : ?mark:string -> (t -> Memo.t -> 'a B00_std.Fut.t) -> 'a key
key ~mark det
is a new key whose value is determined on access by the future:
det s (Memo.with_mark mark (Store.memo s))
mark
defaults to ""
.
val get : t -> 'a key -> 'a B00_std.Fut.t
get s k
is a future that dermines with the value of k
in s
.