Module Bastet.Dual

type 'a dual =
| Dual of 'a

A data structure representing the dual of a monoid

module type MAGMA_F = functor (M : Interface.MAGMA) -> Interface.MAGMA with type t = M.t dual
module type SEMIGROUP_F = functor (S : Interface.SEMIGROUP) -> Interface.SEMIGROUP with type t = S.t dual
module type MONOID_F = functor (M : Interface.MONOID) -> Interface.MONOID with type t = M.t dual
module type MAGMA_ANY_F = functor (M : Interface.MAGMA_ANY) -> Interface.MAGMA_ANY with type 'a t = 'a M.t dual
module type SEMIGROUP_ANY_F = functor (S : Interface.SEMIGROUP_ANY) -> Interface.SEMIGROUP_ANY with type 'a t = 'a S.t dual
module type MONOID_ANY_F = functor (M : Interface.MONOID_ANY) -> Interface.MONOID_ANY with type 'a t = 'a M.t dual
module type TRAVERSABLE_F = functor (A : Interface.APPLICATIVE) -> Interface.TRAVERSABLE with type 'a t = 'a dual and type 'a applicative_t = 'a A.t
module Magma : MAGMA_F
module Semigroup : SEMIGROUP_F
module Monoid : MONOID_F
module Functor : Interface.FUNCTOR with type 'a t = 'a dual
module Applicative : Interface.APPLICATIVE with type 'a t = 'a dual
module Monad : Interface.MONAD with type 'a t = 'a dual
module Magma_Any : MAGMA_ANY_F
module Semigroup_Any : SEMIGROUP_ANY_F
module Monoid_Any : MONOID_ANY_F
module Foldable : Interface.FOLDABLE with type 'a t = 'a dual
module Traversable : TRAVERSABLE_F
module Infix : sig ... end