semiring-0.3: Data/Semiring/Max.hs
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Data.Semiring.Max where
import Data.Semiring
newtype Max n = Max n
deriving (Eq, Show, Ord, Bounded, Num)
instance (Num n) => Multiplicative (Max n) where
one = 0
times = (+)
instance (Ord n, Bounded n) =>Monoid (Max n) where
mempty = minBound
mappend = (max)
instance (Bounded n, Ord n, Num n) => Semiring (Max n)
instance (Bounded n, Ord n, Num n) => WeightedSemiring (Max n)