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.