It is often the case that the value A in Option.when cannot be constructed if the predicate is false. Example:
final headOption = Option.when(list.isNotEmpty, list.first); // this throws
That often defeats the purpose and there is option(predicate, value) for a strict version. I suggest that the when function signature should be
static Option<A> when<A>(bool test, Function0<A> value)
for cases where the value cannot be constructed if the predicate is false, or that there should be another method with such a signature. This is analogous to the existing Either.cond(pred, () => r, () => l).
It is often the case that the value
AinOption.whencannot be constructed if the predicate is false. Example:That often defeats the purpose and there is
option(predicate, value)for a strict version. I suggest that thewhenfunction signature should befor cases where the value cannot be constructed if the predicate is
false, or that there should be another method with such a signature. This is analogous to the existingEither.cond(pred, () => r, () => l).