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

S presents the object C: a value convertible to C (the default: the object is one value type), or a type the object names (C::presents). More...

Concept definition

template<typename S, typename C>
concept dedekind::category::Presents = std::convertible_to<S, C> || (requires {
{
C::template presents<std::remove_cvref_t<S>>
} -> std::convertible_to<bool>;
} && C::template presents<std::remove_cvref_t<S>>)
S presents the object C: a value convertible to C (the default: the object is one value type),...
Definition morphism.cppm:141

Detailed Description

S presents the object C: a value convertible to C (the default: the object is one value type), or a type the object names (C::presents).

morphism__Objects_And_Their_Presentations

Domain and Codomain name objects. By default an object is presented by one value type, itself: IsArrow checks the call on it and asks the result to convert to it. That is not always possible. A type-indexed family (an expression grammar, each expression its own type so the reducer can rewrite at compile time) presents one object by many types, and no single type is the object: the sets over a carrier are 𝔸, comprehensions, Meet / Join / Not nodes, one object \(\mathrm{Sub}(T)\) (sets::Subobjects). Such an object names its presentations (presents) and one representative (archetype), and IsArrow reads them: the call is checked on the archetype, the result is asked to present the codomain. A concept quantifies over no types, so the ∀ over presentations is the arrow's own constrained operator() (every S that presents the domain); the concept checks the representative.

Template Parameters
Sthe presentation.
Cthe object.