Either<L, R> filter(bool Function(R r) predicate, L Function() fallback) => fold((_) => this, (R r) => predicate(r) ? this : left(fallback()));