dartz icon indicating copy to clipboard operation
dartz copied to clipboard

Value should be lazy in Option.when

Open otto-dev opened this issue 3 years ago • 0 comments

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).

otto-dev avatar Apr 16 '22 04:04 otto-dev