Relate the keys of one map to the values of the other, by using the
values of the former as keys for lookups in the latter.
Complexity: <math>, where <math> is the size of the first
argument
compose (fromList [('a', "A"), ('b', "B")]) (fromList [(1,'a'),(2,'b'),(3,'z')]) = fromList [(1,"A"),(2,"B")]
(compose bc ab !?) = (bc !?) <=< (ab !?)
Note: Prior to v0.6.4,
Data.Word64Map.Strict exposed a
version of
compose that forced the values of the output
Word64Map. This version does not force these values.