nekolib/traits/action.rs
1//! 作用モノイド。
2
3use super::binop;
4
5use binop::{Magma, Monoid};
6
7/// 作用モノイド。
8pub trait MonoidAction {
9 /// 作用を行う型。
10 type Operator: Monoid;
11 /// 作用される型。
12 type Operand: Monoid;
13
14 fn operator(&self) -> &Self::Operator;
15 fn operand(&self) -> &Self::Operand;
16 /// 作用を行う。
17 fn act(
18 &self,
19 x: <Self::Operand as Magma>::Set,
20 op: <Self::Operator as Magma>::Set,
21 ) -> <Self::Operand as Magma>::Set;
22}