Why does `filterBidirectional` exist, and why isn't it called `filter`?

Timon Gehr timon.gehr at gmx.ch
Sun Mar 12 17:59:07 UTC 2023


On 3/12/23 11:06, Tejas wrote:
> On Saturday, 11 March 2023 at 19:52:06 UTC, Timon Gehr wrote:
>> On 3/10/23 23:47, Paul Backus wrote:
>>> On Friday, 10 March 2023 at 13:46:03 UTC, Ogi wrote:
>>>> On Thursday, 9 March 2023 at 17:07:40 UTC, Paul Backus wrote:
>>>>>
>>>>> I think probably you have to go on a case-by-case basis. 
>>>>> `File.byLine`, for example, does not and should not precompute 
>>>>> `front`, because doing so is potentially very expensive.
>>>>
>>>> And then ‘File.byLine’ ends up being const and now you can’t call 
>>>> ‘front’ on it. Ouch.
>>>
>>> Ranges already don't work with `const`, so the fact that this one 
>>> fails to work with `const` a little more than usual is not a huge 
>>> deal, IMO.
>>
>> `const` tends to just not work really well together with abstraction.
>> "`const` correctness" in D is a fool's errand.
> 
> Should we just remove `const` then and get it over with?

`const` is fine for POD. Things like `scope const(ubyte)[]` are useful.
It's just not a good match for abstract data types.


More information about the Digitalmars-d mailing list