fn try_and<T, E>(
    a: T,
    b: T,
    f: impl Fn(T) -> Result<bool, E>
) -> Result<bool, E>