11module Data.Monoid.Multiplicative where
22
3- import Control.Applicative (class Applicative )
4- import Control.Apply (class Apply )
5- import Control.Bind (class Bind )
3+ import Prelude
4+
65import Control.Comonad (class Comonad )
76import Control.Extend (class Extend )
8- import Control.Monad (class Monad )
97
10- import Data.Bounded (class Bounded , top , bottom )
11- import Data.Eq (class Eq , (==))
12- import Data.Functor (class Functor )
138import Data.Functor.Invariant (class Invariant )
149import Data.Monoid (class Monoid )
15- import Data.Ord (class Ord , compare )
16- import Data.Semigroup (class Semigroup , (<>))
17- import Data.Semiring (class Semiring , (*), one )
18- import Data.Show (class Show , show )
10+ import Data.Newtype (class Newtype , unwrap )
1911
2012-- | Monoid and semigroup for semirings under multiplication.
2113-- |
@@ -25,18 +17,13 @@ import Data.Show (class Show, show)
2517-- | ```
2618newtype Multiplicative a = Multiplicative a
2719
28- runMultiplicative :: forall a . Multiplicative a -> a
29- runMultiplicative (Multiplicative x) = x
20+ derive instance newtypeMultiplicative :: Newtype (Multiplicative a ) _
3021
31- instance eqMultiplicative :: (Eq a ) => Eq (Multiplicative a ) where
32- eq (Multiplicative x) (Multiplicative y) = x == y
22+ derive newtype instance eqMultiplicative :: Eq a => Eq (Multiplicative a )
3323
34- instance ordMultiplicative :: (Ord a ) => Ord (Multiplicative a ) where
35- compare (Multiplicative x) (Multiplicative y) = compare x y
24+ derive newtype instance ordMultiplicative :: Ord a => Ord (Multiplicative a )
3625
37- instance boundedMultiplicative :: Bounded a => Bounded (Multiplicative a ) where
38- top = Multiplicative top
39- bottom = Multiplicative bottom
26+ derive newtype instance boundedMultiplicative :: Bounded a => Bounded (Multiplicative a )
4027
4128instance functorMultiplicative :: Functor Multiplicative where
4229 map f (Multiplicative x) = Multiplicative (f x)
@@ -59,7 +46,7 @@ instance extendMultiplicative :: Extend Multiplicative where
5946 extend f x = Multiplicative (f x)
6047
6148instance comonadMultiplicative :: Comonad Multiplicative where
62- extract = runMultiplicative
49+ extract = unwrap
6350
6451instance showMultiplicative :: (Show a ) => Show (Multiplicative a ) where
6552 show (Multiplicative a) = " (Multiplicative " <> show a <> " )"
0 commit comments