On Thursday, 1 January 2026 at 19:20:25 UTC, zhade wrote:
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.

It doesn't. In case of `fail`, `filter` and `map` have nothing to process and therefore they stop immediately. It is just as fail-fast as `return fail? []: someExpensiveOperation()`.

Reply via email to