on master help sign in
simplify the Semigroup instance of MaybeDefault
000f901Willem Van Onsem
src/Graphics/Vty/Attributes.hs+4−9
@@ -152,15 +152,10 @@ instance (NFData v) => NFData (MaybeDefault v) where
152 rnf (SetTo v) = rnf v
152 rnf (SetTo v) = rnf v
153
153
154instance Eq v => Semigroup (MaybeDefault v) where
154instance Eq v => Semigroup (MaybeDefault v) where
155− Default <> Default = Default
156− Default <> KeepCurrent = Default
157− Default <> SetTo v = SetTo v
155+ _ <> v@(SetTo _) = v
158− KeepCurrent <> Default = Default
159− KeepCurrent <> KeepCurrent = KeepCurrent
156+ x <> KeepCurrent = x
160− KeepCurrent <> SetTo v = SetTo v
157+ Default <> _ = Default
161− SetTo _v <> Default = Default
158+ _ <> Default = Default
162− SetTo v <> KeepCurrent = SetTo v
163− SetTo _ <> SetTo v = SetTo v
164
159
165instance Eq v => Monoid ( MaybeDefault v ) where
160instance Eq v => Monoid ( MaybeDefault v ) where
166 mempty = KeepCurrent
161 mempty = KeepCurrent
vty.cabal+26
@@ -554,6 +554,32 @@ test-suite verify-color-mapping
554 utf8-string >= 0.3 && < 1.1,
554 utf8-string >= 0.3 && < 1.1,
555 vector >= 0.7
555 vector >= 0.7
556
556
557+test-suite verify-semigroup-maybedefault
558+ default-language: Haskell2010
559+ default-extensions: ScopedTypeVariables
560+
561+ type: detailed-0.9
562+
563+ hs-source-dirs: test
564+
565+ test-module: VerifyAttributes
566+
567+ other-modules: Verify
568+
569+ build-depends: vty,
570+ Cabal >= 1.20,
571+ QuickCheck >= 2.7,
572+ random >= 1.0 && < 1.3,
573+ base >= 4.8 && < 5,
574+ bytestring,
575+ containers,
576+ deepseq >= 1.1 && < 1.5,
577+ mtl >= 1.1.1.0 && < 2.3,
578+ text >= 0.11.3,
579+ unix,
580+ utf8-string >= 0.3 && < 1.1,
581+ vector >= 0.7
582+
557
583
558test-suite verify-utf8-width
584test-suite verify-utf8-width
559 default-language: Haskell2010
585 default-language: Haskell2010