Tady ještě pro inspiraci, k čemu se hodí přidružené typy:
fn bind<U: Clone, F: Fn(&Self::In) -> Self::Out<U>>(&self, f: &F) -> Self::Out<U>;
fn join<U: Clone>(&self) -> Self::Out<U>
where
Self::In: Is<Type = Self::Out<U>>,
{
self.bind(&|x| Is::into(x.clone()))
}
Dlužno podotknout, že na rozdíl od Haskellu to je příšerně ukecané.