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}