pub trait Functor<K: ArrayKind, O1, A1, O2, A2> {
// Required methods
fn map_object(
&self,
a: &SemifiniteFunction<K, O1>,
) -> IndexedCoproduct<K, SemifiniteFunction<K, O2>>;
fn map_operations(
&self,
ops: Operations<K, O1, A1>,
) -> OpenHypergraph<K, O2, A2>;
fn map_arrow(
&self,
f: &OpenHypergraph<K, O1, A1>,
) -> OpenHypergraph<K, O2, A2>;
}
Expand description
Strict symmetric monoidal hypergraph functors
Required Methods§
Sourcefn map_object(
&self,
a: &SemifiniteFunction<K, O1>,
) -> IndexedCoproduct<K, SemifiniteFunction<K, O2>>
fn map_object( &self, a: &SemifiniteFunction<K, O1>, ) -> IndexedCoproduct<K, SemifiniteFunction<K, O2>>
Action on objects
Sourcefn map_operations(
&self,
ops: Operations<K, O1, A1>,
) -> OpenHypergraph<K, O2, A2>
fn map_operations( &self, ops: Operations<K, O1, A1>, ) -> OpenHypergraph<K, O2, A2>
Action on tensoring of operations, i.e., compute F(f₀) ● F(f₁) ● .. ● F(fn)
for
generators f_i
.
Sourcefn map_arrow(&self, f: &OpenHypergraph<K, O1, A1>) -> OpenHypergraph<K, O2, A2>
fn map_arrow(&self, f: &OpenHypergraph<K, O1, A1>) -> OpenHypergraph<K, O2, A2>
Action on arrows.
If you have implemented map_operations
, you can implement this simply as
define_map_arrow(self, f)
.