Search code examples
haskellhaskell-lenshaskell-optics

Optic from map to its association pairs


I need a Fold (Map k v) (k, v) optic. Is there a way to obtain it with the "optics" library? If not, is there one with "lens"?


Solution

  • In either optics or lens, you should be able to write:

    pairs :: Fold (Map k v) (k, v)
    pairs = folding Map.toList
    

    Generally speaking folding takes any function that produces a foldable result (in this case, a list of key-value pairs) and creates a fold over those elements.