Hash provides user-defined hash functions to digest serialized contents. Some backends might be parameterized by such hash functions, others might work with a fixed one (for instance, the Git format uses only SHA1).
A SHA1 implementation is available to pass to the backends.
module type S = sig ... end
Signature for hash values.
module type TYPED = sig ... end
Signature for typed hashes, where
hash directly takes a value as argument and incremental hashing is not possible.