ALP User Documentation 0.7.0
Algebraic Programming User Documentation

Algebraic type traits allows compiletime reasoning on algebraic structures. More...
Classes  
struct  has_immutable_nonzeroes< T > 
Used to inspect whether a given semiring has immutable nonzeroes under addition. More...  
struct  is_associative< T, typename > 
Used to inspect whether a given operator or monoid is associative. More...  
struct  is_commutative< T, typename > 
Used to inspect whether a given operator or monoid is commutative. More...  
struct  is_container< T > 
Used to inspect whether a given type is an ALP/GraphBLAS container. More...  
struct  is_idempotent< T, typename > 
Used to inspect whether a given operator or monoid is idempotent. More...  
struct  is_monoid< T > 
Used to inspect whether a given type is an ALP monoid. More...  
struct  is_object< T > 
Used to inspect whether a given type is an ALP/GraphBLAS object. More...  
struct  is_operator< T > 
Used to inspect whether a given type is an ALP operator. More...  
struct  is_semiring< T > 
Used to inspect whether a given type is an ALP semiring. More...  
Algebraic type traits allows compiletime reasoning on algebraic structures.
Under algebraic type traits, ALP defines two classes of type traits:
std::is_integral
, defined over the ALPspecific algebraic objects such as grb::Semiring, andUnder the first class, the following type traits are defined by ALP:
Under the second class, the following type traits are defined by ALP:
Algebraic type traits are a central concept to ALP; depending on algebraic properties, ALP applies different optimisations. Properties such as associativity furthermore often define whether primitives may be automatically parallelised. Therefore, some primitives only allow algebraic structures with certain properties.
Since algebraic type traits are compiletime, the composition of invalid structures (e.g., composing a monoid out of a nonassociative binary operator), or the calling of a primitive using an incompatible algebraic structure, results in an compiletime error. Such errors are furthermore accompanied by clear messages and suggestions.