{-# OPTIONS_GHC -fno-warn-orphans #-} module Data.Registry.Internal.MultiMap () where import Data.MultiMap (MultiMap) import Data.MultiMap qualified as MM import Protolude as P hiding (show) import Prelude (show) instance (Show k, Show v) => Show (MultiMap k v) where show :: MultiMap k v -> String show = [(k, [v])] -> String forall a. Show a => a -> String show ([(k, [v])] -> String) -> (MultiMap k v -> [(k, [v])]) -> MultiMap k v -> String forall b c a. (b -> c) -> (a -> b) -> a -> c . MultiMap k v -> [(k, [v])] forall k a. MultiMap k a -> [(k, [a])] MM.assocs instance (Ord k) => Semigroup (MultiMap k v) where <> :: MultiMap k v -> MultiMap k v -> MultiMap k v (<>) MultiMap k v m1 MultiMap k v m2 = [(k, v)] -> MultiMap k v forall k a. Ord k => [(k, a)] -> MultiMap k a MM.fromList (MultiMap k v -> [(k, v)] forall k a. MultiMap k a -> [(k, a)] MM.toList MultiMap k v m1 [(k, v)] -> [(k, v)] -> [(k, v)] forall a. Semigroup a => a -> a -> a <> MultiMap k v -> [(k, v)] forall k a. MultiMap k a -> [(k, a)] MM.toList MultiMap k v m2) instance (Ord k) => Monoid (MultiMap k v) where mempty :: MultiMap k v mempty = MultiMap k v forall k a. MultiMap k a MM.empty mappend :: MultiMap k v -> MultiMap k v -> MultiMap k v mappend = MultiMap k v -> MultiMap k v -> MultiMap k v forall a. Semigroup a => a -> a -> a (<>)