On Thursday, 1 January 2026 at 17:01:25 UTC, zhade wrote:
Example:

```d
import std.algorithm : filter, map;
import std.typecons : tuple;

auto example_func(bool fail)
{
    if (fail)
    {
        // [...]
    }

    auto list = someExpensiveOperation();

    return list
        .filter!(a => a != "expensive")
        .map!(a => tuple!("value", "numLetters")(a, a.length));
}

string[] someExpensiveOperation()
{
    return ["some", "expensive", "operation"];
}
```

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.

Reply via email to