On Thursday, 1 January 2026 at 17:09:20 UTC, Paul Backus wrote:
You could try something like this:
```d
auto example_func(bool fail)
{
string[] list;
if (fail)
list = [];
else
list = someExpensiveOperation();
return list
.filter!(...)
.map!(...);
}
```
Because `map` and `filter` are lazy, calling them on an empty
`list` won't do anything, but they will still return the
correct type.
Thank you, yes this will work but it eliminates the fail-fast.
For readability I reduced the actual code to a simple example (in
hindsight I should have kept it a bit more complex). I would need
to wrap all the other logic that happens after
"someExpensiveOperation" inside the 'else' block.