Add (explicitly-bidirectional record) pattern synonyms to Data.Semigroup:
pattern ArgMin :: a -> b -> ArgMin a b pattern ArgMin {minArg, minValue} = Min (Arg minArg minValue)
pattern ArgMax :: a -> b -> ArgMax a b pattern ArgMax {maxArg, maxValue} = Max (Arg maxArg maxValue)
As described in https://ghc.haskell.org/trac/ghc/ticket/13572