I think you can find splitter in std.array. I had a few other problems compiling your code, I could get this version to work:
import std.stdio, std.array, std.string; //need to import std.array void main() { ulong[string] dictionary; // the length property is ulong, not uint foreach (line; stdin.byLine()) { foreach (word; splitter(strip(line))) { if (word in dictionary) continue; auto newID = dictionary.length; dictionary[word.idup] = newID; //dictionarys need immutable keys, you can create this with .idup writeln(newID, '\t', word); } } } Good luck! Andrew On Monday, 16 June 2014 at 16:38:15 UTC, Sanios wrote:
Hello guys, as first I don't know, if I'm writing to correct section, but I've got a problem. I'm actually reading book of D guide and trying to do it like it is in book. My code is: import std.stdio, std.string; void main() { uint[string] dictionary; foreach (line; stdin.byLine()) { foreach (word; splitter(strip(line))) { if (word in dictionary) continue; auto newID = dictionary.length; dictionary[word] = newID; writeln(newID, '\t', word); } } } And I'm getting this - Error: undefined identifier splitter It seems like std.string doesn't contain splitter.