haskell Keyed functors and containers