11module Data.Monoid.Disj 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.HeytingAlgebra (class HeytingAlgebra , conj , disj , ff , tt )
11- import Data.Bounded (class Bounded , top , bottom )
12- import Data.Eq (class Eq , (==))
13- import Data.Functor (class Functor )
8+ import Data.Functor.Invariant (class Invariant )
9+ import Data.HeytingAlgebra (ff , tt )
1410import Data.Monoid (class Monoid )
15- import Data.Ord (class Ord , compare )
16- import Data.Semigroup (class Semigroup , (<>))
17- import Data.Semiring (class Semiring )
18- import Data.Show (class Show , show )
11+ import Data.Newtype (class Newtype , unwrap )
1912
2013-- | Monoid under disjuntion.
2114-- |
@@ -25,14 +18,11 @@ import Data.Show (class Show, show)
2518-- | ```
2619newtype Disj a = Disj a
2720
28- runDisj :: forall a . Disj a -> a
29- runDisj (Disj x) = x
21+ derive instance newtypeDisj :: Newtype (Disj a ) _
3022
31- instance eqDisj :: Eq a => Eq (Disj a ) where
32- eq (Disj x) (Disj y) = x == y
23+ derive newtype instance eqDisj :: Eq a => Eq (Disj a )
3324
34- instance ordDisj :: Ord a => Ord (Disj a ) where
35- compare (Disj x) (Disj y) = compare x y
25+ derive newtype instance ordDisj :: Ord a => Ord (Disj a )
3626
3727instance boundedDisj :: Bounded a => Bounded (Disj a ) where
3828 top = Disj top
@@ -41,6 +31,9 @@ instance boundedDisj :: Bounded a => Bounded (Disj a) where
4131instance functorDisj :: Functor Disj where
4232 map f (Disj x) = Disj (f x)
4333
34+ instance invariantDisj :: Invariant Disj where
35+ imap f _ (Disj x) = Disj (f x)
36+
4437instance applyDisj :: Apply Disj where
4538 apply (Disj f) (Disj x) = Disj (f x)
4639
@@ -56,7 +49,7 @@ instance extendDisj :: Extend Disj where
5649 extend f x = Disj (f x)
5750
5851instance comonadDisj :: Comonad Disj where
59- extract = runDisj
52+ extract = unwrap
6053
6154instance showDisj :: Show a => Show (Disj a ) where
6255 show (Disj a) = " (Disj " <> show a <> " )"
0 commit comments