From 3fe2aaee4abc51de1c4b92909bafdd88be49fd76 Mon Sep 17 00:00:00 2001 From: Joe Crayne Date: Tue, 26 Mar 2019 21:39:23 -0400 Subject: Added Semigroup instance. --- haskell/Data/VCDIFF.hs | 3 +++ haskell/Data/VCDIFF/Types.hsc | 3 +++ 2 files changed, 6 insertions(+) diff --git a/haskell/Data/VCDIFF.hs b/haskell/Data/VCDIFF.hs index fe4cc98..db75fb1 100644 --- a/haskell/Data/VCDIFF.hs +++ b/haskell/Data/VCDIFF.hs @@ -273,6 +273,9 @@ data Result x = Result -- is an error code and message indicating what. } deriving (Show,Functor) +instance Semigroup x => Semigroup (Result x) where + Result x xe <> y = Result (x <> result y) (maybe (resultError y) Just xe) + instance Monoid x => Monoid (Result x) where mempty = Result mempty Nothing mappend (Result x xe) y = Result (mappend x $ result y) (maybe (resultError y) Just xe) diff --git a/haskell/Data/VCDIFF/Types.hsc b/haskell/Data/VCDIFF/Types.hsc index 015f406..54237b8 100644 --- a/haskell/Data/VCDIFF/Types.hsc +++ b/haskell/Data/VCDIFF/Types.hsc @@ -167,6 +167,9 @@ pattern XD3_COMPLEVEL_3 = Flags (#const XD3_COMPLEVEL_3) pattern XD3_COMPLEVEL_6 = Flags (#const XD3_COMPLEVEL_6) pattern XD3_COMPLEVEL_9 = Flags (#const XD3_COMPLEVEL_9) +instance Semigroup Flags where + Flags a <> Flags b = Flags (a .|. b) + instance Monoid Flags where mempty = Flags 0 Flags a `mappend` Flags b = Flags (a .|. b) -- cgit v1.2.3