Skip to main content

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}