haar_lib/algebra/list.rs
1//! `Vec`結合のモノイド
2use std::marker::PhantomData;
3
4pub use crate::algebra::traits::*;
5use crate::impl_algebra;
6
7/// `Vec`の結合演算のモノイド
8#[derive(Clone, Copy, Default, Debug, Hash, PartialEq, Eq)]
9pub struct ConcatList<T>(PhantomData<T>);
10impl<T> ConcatList<T> {
11 /// `ConcatList`を返す。
12 pub fn new() -> Self {
13 Self(PhantomData)
14 }
15}
16
17impl_algebra!(
18 {T} ConcatList<T>;
19 set: Vec<T>;
20 id: |_| vec![];
21 op: |_, mut a: Vec<T>, mut b: Vec<T>| {a.append(&mut b); a};
22 assoc;
23);