On Tuesday, 13 September 2022 at 15:24:20 UTC, Ali Çehreli wrote:
On 9/12/22 22:24, Salih Dincer wrote:
2) This point is about a topic that I brought up recently:
Types gain a 'const' eagerly (and they have to, understandably).
For example, in your example you are caching an 'int', but my
code sees const(int) just because std.range.Cycle.front chose
to put a 'const' on itself. (With all good intentions:
Cycle.front really does not mutate a Cycle object.)
However, as my range picks the element type with ElementType!T,
I see const(int) as well. Again, all good so far... And here is
my opApply funtion:
```d
int opApply(int delegate(ref EC.ET) func) scope
{
while(!empty)
{
auto f = front;
int result = func(f); // ERROR
if (result)
{
return result;
}
popFront();
}
return 0;
}
```
ERROR: delegate `func(ref int)` is not callable using argument
types `(const(int))`
I'm far from making a solid recommendation. Immutable with const
still doesn't make sense to me. I claim we can live without
them. Immutable confuses me a lot.
I think we should take control by creating our own types. D
Language should be unornamented.
SDB@79