More efficient data fetching using deduplication, batching, and caching.
A resource implements the fetching of data.
Instances must satisfy the following laws in addition to the
- Key preservation:
(true <$ resource ks) = map (\m -> all (Map.member <@> m) ks) (resource ks)