Dedekind 0.0.0
A structuralist C++23 Module Library
Loading...
Searching...
No Matches
dedekind::category::HasArrowComposeOperators Concept Referenceexport

Two arrow types F, G compose via >> . More...

Concept definition

template<typename F, typename G>
std::same_as<typename std::remove_cvref_t<F>::Codomain,
typename std::remove_cvref_t<G>::Domain> &&
requires(F const& f, G const& g) {
{ f >> g } -> IsArrow;
}
Two arrow types F, G compose via >> .
Definition morphism.cppm:1435
A type that knows its own Domain (A) and Codomain (B), objects it maps between: called at the domain'...
Definition morphism.cppm:168

Detailed Description

Two arrow types F, G compose via >> .

Captures the operator-shape availability of categorical arrow composition aligned with this partition's operator>> policy: arrows ( IsArrow ) and codomain/domain-matched ( F::Codomain = G::Domain ). Given f : A → B and g : B → C, the expression f >> g must compile and yield a result modelling IsArrow.

Note: this concept covers >> only. There is no arrow-level << overload at the :morphism layer ( << in the project is comonadic extend in :kleisli); the reverse-composition direction, if reified later, is a separate concept. Functors compose by a more constrained overload in :functor.

The laws (associativity, identity) are the engineer's honesty obligation, mechanically discharged by the existing "id @c ∘ @c id @c = @c id" static_asserts.