monus-0.2.0.0: a 'Monus' is a commutative monoid that allows a notion of substraction.

Safe HaskellNone
LanguageHaskell2010

Data.Monoid.Monus.Generic

Description

This module provides generic deriving tools for monuses for product-like structures.

Synopsis

Documentation

class GMonus f where Source #

Minimal complete definition

gmonus'

Methods

gmonus' :: f a -> f a -> f a Source #

Instances
GMonus (U1 :: * -> *) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Methods

gmonus' :: U1 a -> U1 a -> U1 a Source #

Monus a => GMonus (K1 i a :: * -> *) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Methods

gmonus' :: K1 i a a0 -> K1 i a a0 -> K1 i a a0 Source #

(GMonus a, GMonus b) => GMonus (a :*: b) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Methods

gmonus' :: (a :*: b) a0 -> (a :*: b) a0 -> (a :*: b) a0 Source #

GMonus a => GMonus (M1 i c a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Methods

gmonus' :: M1 i c a a0 -> M1 i c a a0 -> M1 i c a a0 Source #

gmonus :: (Generic a, GMonus (Rep a)) => a -> a -> a Source #

Generically generate a Monus monus operation for any type implementing Generic. It is only defined for product types.

gmonus a b = gmonus b a

newtype WrappedMonus a Source #

This type is useful with -XDerivingVia.

Constructors

WrappedMonus a 
Instances
Generic (WrappedMonus a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Associated Types

type Rep (WrappedMonus a) :: * -> * #

Methods

from :: WrappedMonus a -> Rep (WrappedMonus a) x #

to :: Rep (WrappedMonus a) x -> WrappedMonus a #

Semigroup a => Semigroup (WrappedMonus a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Monoid a => Monoid (WrappedMonus a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

Monus a => Monus (WrappedMonus a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

type Rep (WrappedMonus a) Source # 
Instance details

Defined in Data.Monoid.Monus.Generic

type Rep (WrappedMonus a) = D1 (MetaData "WrappedMonus" "Data.Monoid.Monus.Generic" "monus-0.2.0.0-1bsa463BNyAgEjf63vVS9" True) (C1 (MetaCons "WrappedMonus" PrefixI False) (S1 (MetaSel (Nothing :: Maybe Symbol) NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))