--- Crypto.hs 2017-08-10 20:17:59.000000000 +0200 +++ Crypto.hs 2018-08-05 17:53:01.058720655 +0200 @@ -77,11 +77,11 @@ case Ed25519.publicKey pk of CryptoPassed pk' -> SigVerifier 1 (Ed25519.verify pk') CryptoFailed _ -> mempty - +instance Semigroup SigVerifier where + (SigVerifier na a) <> (SigVerifier nb b) = + SigVerifier (na+nb) $ \d s -> b d s || a d s instance Monoid SigVerifier where mempty = SigVerifier 0 $ \_b _s -> False - mappend (SigVerifier na a) (SigVerifier nb b) = - SigVerifier (na+nb) $ \d s -> b d s || a d s data MySessionKey = MySessionKey Ed25519.SecretKey Ed25519.PublicKey --- Types.hs 2017-08-10 20:17:59.000000000 +0200 +++ Types.hs 2018-08-05 17:51:29.435490869 +0200 @@ -194,9 +194,10 @@ mkElapsedTime :: POSIXTime -> POSIXTime -> ElapsedTime mkElapsedTime start end = ElapsedTime $ fromRational $ toRational (end - start) +instance Semigroup ElapsedTime where + (ElapsedTime a) <> (ElapsedTime b) = ElapsedTime (a+b) instance Monoid ElapsedTime where mempty = ElapsedTime 0 - mappend (ElapsedTime a) (ElapsedTime b) = ElapsedTime (a+b) instance DataSize ElapsedTime where dataSize _ = 16 -- 128 bit Double --- Val.hs 2017-08-10 20:17:59.000000000 +0200 +++ Val.hs 2018-08-05 17:50:22.926328293 +0200 @@ -19,7 +19,7 @@ -- | Newtype of ByteString so we can have JSON instances without orphans. newtype Val = Val { val :: B.ByteString } - deriving (Show, Generic, Eq, Monoid) + deriving (Show, Generic, Eq, Monoid, Semigroup) instance DataSize Val where dataSize (Val b) = fromIntegral (B.length b)