a dynamic type map using GHC’s Typeable class,
with a Proxy-based API (Data.TypeMap.Dynamic)
or a TypeApplications-based API (Data.TypeMap.Dynamic.Alt);
a static type map, whose type is indexed by its list of keys
(there are actually multiple implementations with different underlying
representations ([], Map, Vector)).
Both variants support arbitrary, user-defined mappings between types and
values, via defunctionalization.