On Wednesday, 12 May 2021 at 09:52:52 UTC, Alain De Vos wrote:
As oppposed to what i expect code below prints nothing nothing
on the screen. What is wrong and how to fix it ?
```
import std.stdio;
import std.range:iota;
import std.algorithm:map;
bool mywriteln(int x){
writeln(x);
return true;
}
void main(){
5.iota.map!mywriteln;
}
```
Berni44 and visitor are correct about the laziness, but you don't
need to use `array` to trigger the operations. That's a needless
allocation. `std.algorithm.each` will do the same thing, without
the allocation. So you could do this:
```d
import std.algorithm : each, map;
5.iota.map!mywriteln.each;
```
But given a function, `each` behaves like an eager `map`, so this
has the same result:
```d
import std.algorithm : each;
5.iota.each!mywriteln;
```