open_hypergraphs/strict/functor/
identity.rs1use super::traits::*;
2use crate::strict::*;
3
4pub struct Identity;
6
7impl<K: ArrayKind, O, A> Functor<K, O, A, O, A> for Identity
8where
9 K::Type<K::I>: NaturalArray<K>,
10 K::Type<O>: Array<K, O> + PartialEq,
11 K::Type<A>: Array<K, A>,
12{
13 fn map_object(
14 &self,
15 a: &SemifiniteFunction<K, O>,
16 ) -> IndexedCoproduct<K, SemifiniteFunction<K, O>> {
17 IndexedCoproduct::elements(a.clone())
18 }
19
20 fn map_arrow(&self, f: &OpenHypergraph<K, O, A>) -> OpenHypergraph<K, O, A> {
21 define_map_arrow(self, f)
22 }
23
24 fn map_operations(
25 &self,
26 ops: crate::operations::Operations<K, O, A>,
27 ) -> OpenHypergraph<K, O, A> {
28 OpenHypergraph::tensor_operations(ops)
29 }
30}