Hi All,
Request you help on the below program as it error out with the
below error
Error:
UDictCompression.d(31): Error: template UDictCompression.compress
cannot deduce function from argument types !()(string),
candidates are:
UDictCompression.d(19):
UDictCompression.compress(T)(Array!T col)
Program:
import std.algorithm: countUntil, joiner, sort, uniq, map;
import std.csv: csvReader;
import std.stdio: File, writeln;
import std.typecons: Tuple, tuple;
import std.meta: AliasSeq;
import std.container.array;
alias ColumnTypes = AliasSeq!(string, string, int);
alias Arr(T) = Array!T;
auto readData() {
auto file =
File("C:\\Users\\bheev1\\Desktop\\Current\\Script\\Others\\TColRead.csv", "r");
Arr!(Tuple!ColumnTypes) res;
foreach (record;
file.byLineCopy.joiner("\n").csvReader!(Tuple!ColumnTypes))
{ res.insertBack(record); }
return res;
}
auto compress(T)(Array!T col) {
Arr!int ks; Array!T vals;
vals.insertBack(sort(col.dup[]).uniq);
ks.insertBack(col.map!(v => vals.countUntil(v)));
return tuple(vals, ks);
}
void main() {
auto columns = readData[];
foreach(r; columns)
{
foreach(i, ColT; ColumnTypes) {
auto vk = compress(r[i]);
writeln(vk[0][], vk[1][]);
}
}
}
From,
Vino.B