fp_library/types/
tuple.rs

1use crate::{
2	hkt::{Apply, Apply2, Kind2},
3	types::SoloBrand,
4};
5
6#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
7pub struct Tuple<A, B>(A, B);
8
9pub struct TupleBrand;
10
11impl<A, B> Kind2<A, B> for TupleBrand {
12	type Output = Tuple<A, B>;
13}
14
15impl TupleBrand {
16	pub fn from_solos<A: Clone, B>(
17		a: Apply<SoloBrand, A>
18	) -> impl Fn(Apply<SoloBrand, B>) -> Apply2<Self, A, B> {
19		move |b| Tuple(a.0.clone(), b.0)
20	}
21}