macro_rules! regular {
( $arity:literal , $( $constr:ident )|* of $( $scalar:ident )|*) => { ... };
( $arity:literal , $( $constr:ident )|* of $( $scalar:ident )|* -> $conclude:ident) => { ... };
}Expand description
Construct a Regular OverloadSet.
Examples:
-
regular!(2, SCALAR|VECN of FLOAT): An overload set whose rules take two arguments of the same type: a floating-point scalar (possibly abstract) or a vector of such. The return type is the same as the argument type. -
regular!(1, VECN of FLOAT -> Scalar): An overload set whose rules take one argument that is a vector of floats, and whose return type is the leaf scalar type of the argument type.
The constructor values (before the < angle brackets >) are
constants from ConstructorSet.
The scalar values (inside the < angle brackets >) are
constants from ScalarSet.
When a return type identifier is given, it is treated as a variant
of the the ConclusionRule enum.