On Tuesday, 26 April 2022 at 00:57:54 UTC, Ali Çehreli wrote:
On 4/25/22 16:59, Salih Dincer wrote:
> Because it cannot be used with other possibilities such as
> ```chunks()``` and ```take()```.
There must be something wrong. map is commonly used with
chunks(), take(), etc.
> Also it cannot be customized with
> ```toString()```.
Can you show examples of these please?
Of course, I have a few friends here:
and a lot of errors 😀
```d
struct Bar {
string s;
this(R)(R result) {
import std.conv : to;
this.s = result.to!string;
}
string toString() {
return s;
}
}
auto parts = "abcdefghi".chunks(3);
auto compiled = parts.map!(a => Bar(a));
auto notCompile1 = parts.map!Bar;
/* Error 1: instantiated from here: `map!(Chunks!string)`*/
auto notCompile2 = parts.map!(c => c.to!string)
.map!Bar;
/* Error 1:
/usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(604)
: cannot access frame pointer of `source.main.Bar`
Error 2:
/usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(499)
: template instance
`std.algorithm.iteration.MapResult!(Bar, MapResult!(__lambda4,
Chunks!string))` error instantiating
Error 3: instantiated from here: `map!(MapResult!(__lambda4,
Chunks!string))`
*/
auto notCompile3 = parts.array.map!Bar;
/* Error 1:
/usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(604)
: cannot access frame pointer of `source.main.Bar`
Error 2:
/usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(616)
: cannot access frame pointer of `source.main.Bar`
Error 3:
/usr/src/dmd/linux/bin64/../../src/phobos/std/algorithm/iteration.d(499)
: template instance
`std.algorithm.iteration.MapResult!(Bar, Take!string[])` error
instantiating
Error 4: instantiated from here: `map!(Take!string
*/
auto arr = compiled.array; /* [abc, def, ghi]
auto arr2 = str.chunks(3)
.map!(a => Bar(a))
.array;//*/
arr.writeln(": ", typeof(arr).stringof);
```
SDB@79