map -package:base -package:bytestring -package:basement -package:blaze-html package:amazonka-core

An isomorphism holds when lifted into a functor. For example, if a list contains a bunch of a's which are each isomorphic to a b, the whole list of a's is isomorphic to a list of b's.
>>> ["1","2","3"] ^. mapping _Show :: [Int]
[1,2,3]

>>> ([1,2,3] :: [Int]) ^. from (mapping _Show)
["1","2","3"]
This also hold across different functors:
>>> let l = mapping @[] @Maybe _Show

>>> :t l
l :: (Read b, Show b) => Iso [String] (Maybe String) [b] (Maybe b)

>>> ["1","2","3"] & l %~ Just . sum
Just "6"
A map from keys to values. A map cannot contain duplicate keys; each key can map to at most one value.