On Friday, 10 January 2025 at 02:47:24 UTC, Salih Dincer wrote:
On Thursday, 9 January 2025 at 21:56:59 UTC, monkyyy wrote:
Im aware phoboes takes ....more complexity to implement filter and there should be *some* extra complexity to make a bidirectional filter, but when I ussally look into phoboes 1000 line functions I usually make different tradeoffs. What are the actual considerations here?

I don't really understand, what needs to be considerations? Isn't the interface below sufficient?

```d
auto filter(alias F,R)(R r)
{
  struct Filter
  {
    R r;
    auto back()     => r.back;
    auto front()    => r.front;
    auto popFront() => r = r.findNext!F;
    auto popBack()  => r = r.findPrevious!F;
    auto empty()    => r.empty;
    auto save()     => r.save;
  }
  return Filter(r.find!F);
}
```

SDB@79

Well:
1) `[1,2,3,4,5].Filter!(a=>a==3).back` should equal 3, in yours it will equal 5
2) your no longer supporting unidirectional ranges

And that only what I notice without any testing; I feel worse about being eager for back then front

Reply via email to