From e9689394b17f204ead6a33fb8d696ce74ab96b43 Mon Sep 17 00:00:00 2001 From: Sergey Vinokurov Date: Fri, 30 Mar 2018 11:19:08 +0100 Subject: [PATCH] Add Semigroup instance for 'Max' monoid Otherwise ghc 8.4 will complain since Semigroup became a superclass of Monoid. --- src-brittany/Main.hs | 3 ++- src/Language/Haskell/Brittany/Internal/Prelude.hs | 6 ++++-- src/Language/Haskell/Brittany/Internal/Utils.hs | 5 ++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src-brittany/Main.hs b/src-brittany/Main.hs index 73eccd0..7538411 100644 --- a/src-brittany/Main.hs +++ b/src-brittany/Main.hs @@ -11,6 +11,7 @@ import qualified Language.Haskell.GHC.ExactPrint.Annotate as ExactPrint.Annotate import qualified Language.Haskell.GHC.ExactPrint.Types as ExactPrint.Types import qualified Language.Haskell.GHC.ExactPrint.Parsers as ExactPrint.Parsers import qualified Data.Map as Map +import qualified Data.Monoid import Text.Read (Read(..)) import qualified Text.ParserCombinators.ReadP as ReadP @@ -148,7 +149,7 @@ mainCmdParser helpDesc = do , PP.text "inplace: override respective input file (without backup!)" ] ) - <> flagDefault Display + Data.Monoid.<> flagDefault Display ) inputParams <- addParamNoFlagStrings "PATH" (paramHelpStr "paths to input/inout haskell source files") reorderStop diff --git a/src/Language/Haskell/Brittany/Internal/Prelude.hs b/src/Language/Haskell/Brittany/Internal/Prelude.hs index 0ed9b6c..cc45d2a 100644 --- a/src/Language/Haskell/Brittany/Internal/Prelude.hs +++ b/src/Language/Haskell/Brittany/Internal/Prelude.hs @@ -255,14 +255,16 @@ import Debug.Trace as E ( trace import Foreign.ForeignPtr as E ( ForeignPtr ) -import Data.Monoid as E ( (<>) - , mconcat +import Data.Monoid as E ( mconcat , Monoid (..) ) import Data.Bifunctor as E ( bimap ) import Data.Functor as E ( (<$), ($>) ) import Data.Function as E ( (&) ) +import Data.Semigroup as E ( (<>) + , Semigroup(..) + ) import System.IO as E ( hFlush , stdout ) diff --git a/src/Language/Haskell/Brittany/Internal/Utils.hs b/src/Language/Haskell/Brittany/Internal/Utils.hs index b0896b8..aca6754 100644 --- a/src/Language/Haskell/Brittany/Internal/Utils.hs +++ b/src/Language/Haskell/Brittany/Internal/Utils.hs @@ -84,9 +84,12 @@ fromOptionIdentity x y = newtype Max a = Max { getMax :: a } deriving (Eq, Ord, Show, Bounded, Num) +instance (Num a, Ord a) => Semigroup (Max a) where + (<>) = Data.Coerce.coerce (max :: a -> a -> a) + instance (Num a, Ord a) => Monoid (Max a) where mempty = Max 0 - mappend = Data.Coerce.coerce (max :: a -> a -> a) + mappend = (<>) newtype ShowIsId = ShowIsId String deriving Data