Re: reddit.com: first Chapter of TDPL available for free
On Sat, Aug 8, 2009 at 8:44 PM, Jos van Udenj...@nospam.nl wrote: Andrei Alexandrescu wrote: http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ (Don't tell anyone, but I plan to rewrite it.) Andrei Is this supposed to compile? I keep getting error messages. import std.stdio, std.string; void main() { uint[string] dic; foreach (line; stdin.byLine) { // Break sentence into words string[] words = split(strip(line)); // Add each word in the sentence to the vocabulary foreach (word; words) { if (word in dic) continue; // nothing to do uint newID = dic.length; dic[word] = newID; writeln(newID, '\t', word); } } } test.d(7): Error: function std.string.split (immutable(char)[] s) does not match parameter types (char[]) test.d(7): Error: cannot implicitly convert expression (strip(line)) of type char[] to immutable(char)[] test.d(7): Error: expected 2 function arguments, not 1 I've changed the code to: import std.stdio; import std.string; void main() { uint[string] dic; foreach (line; stdin.byLine) { string[] words = split(strip!(string)(line)); foreach (word; words) { if (word in dic) { continue; } uint newID = dic.length; dic[word] = newID; writeln(newID, '\t', word); } } } but I still get an error... test.d(12): Error: cannot implicitly convert expression (line) of type char[] to immutable(char)[] It's not documented, but the .byLine method returns char[], not immutable(char)[] (string). This is because the 'line' variable is reused on each new line of the input, to improve speed. I think to solved this, you should use: auto words = split(strip(line.idup)); The .idup creates a new duplicate of the line that is immutable. Now, why split() doesn't take a const(char)[] is beyond me..
Re: reddit.com: first Chapter of TDPL available for free
Jarrett Billingsley wrote: On Sat, Aug 8, 2009 at 8:44 PM, Jos van Udenj...@nospam.nl wrote: Andrei Alexandrescu wrote: http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ (Don't tell anyone, but I plan to rewrite it.) Andrei Is this supposed to compile? I keep getting error messages. import std.stdio, std.string; void main() { uint[string] dic; foreach (line; stdin.byLine) { // Break sentence into words string[] words = split(strip(line)); // Add each word in the sentence to the vocabulary foreach (word; words) { if (word in dic) continue; // nothing to do uint newID = dic.length; dic[word] = newID; writeln(newID, '\t', word); } } } test.d(7): Error: function std.string.split (immutable(char)[] s) does not match parameter types (char[]) test.d(7): Error: cannot implicitly convert expression (strip(line)) of type char[] to immutable(char)[] test.d(7): Error: expected 2 function arguments, not 1 I've changed the code to: import std.stdio; import std.string; void main() { uint[string] dic; foreach (line; stdin.byLine) { string[] words = split(strip!(string)(line)); foreach (word; words) { if (word in dic) { continue; } uint newID = dic.length; dic[word] = newID; writeln(newID, '\t', word); } } } but I still get an error... test.d(12): Error: cannot implicitly convert expression (line) of type char[] to immutable(char)[] It's not documented, but the .byLine method returns char[], not immutable(char)[] (string). This is because the 'line' variable is reused on each new line of the input, to improve speed. I think to solved this, you should use: auto words = split(strip(line.idup)); The .idup creates a new duplicate of the line that is immutable. Now, why split() doesn't take a const(char)[] is beyond me.. Yep, that solves it, in both cases. Jos
Re: reddit.com: first Chapter of TDPL available for free
MIURA Masahiro wrote: Andrei Alexandrescu wrote: http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ Thanks for sharing it! Typos: in section 1.1, there are inchPerFoot's and inchperfoot's. Noted, thanks. Andrei
Re: reddit.com: first Chapter of TDPL available for free
Pablo Ripolles wrote: MIURA Masahiro Wrote: Andrei Alexandrescu wrote: http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ Thanks for sharing it! Typos: in section 1.1, there are inchPerFoot's and inchperfoot's. And, of course, the same goes for cmperinch's. Some other observations are the following: In section 1.2 you refer to prior if statements introduced in above samples, what samples? is there maybe a 0 chapte?r In section 1.4, subsection Building a Vocabulary it's not very clear what stdio.byLine is... I mean, it says nothing about how to feed the text to the program. Also in subsection Counting Frequencies. Lambda Functions there appears a call to splitter function, isn't it named split instead? Besides the hamlet.txt URL doesn't work already, maybe a bit of indirection here would also be appreciated... In section 1.5, maybe I miss the reason of importing std.range. In section 1.6, stats is a variable and stats.d is the name of the file/module, shouldn't stats.d be renamed to stat.d so that stat.Max makes sense and so the name of the program becomes stat and it's invoked that way in the command line? Or maybe rename stat.Max to stats.Max? Besides, aren't you talking firstly about Min? Why not to illustrate the thing with stat.Min instead of stat.Max? In the references to different other chapters the word sometimes appears capitalized and sometimes doesn't. Cheers! Thanks, Pablo. Andrei
Re: reddit.com: first Chapter of TDPL available for free
On Mon, 03 Aug 2009 17:01:34 -0500, Andrei Alexandrescu wrote: http://www.reddit.com/r/programming/comments/975ng/ diving_into_the_d_programming_language_tdpl/ (Don't tell anyone, but I plan to rewrite it.) Andrei Your secret will be safe. ;-) Thanks for sharing.
Re: reddit.com: first Chapter of TDPL available for free
Andrei Alexandrescu seewebsiteforem...@erdani.org wrote in message news:h57mno$26g...@digitalmars.com... http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ (Don't tell anyone, but I plan to rewrite it.) Andrei I just read the first section and already I'm impressed with it. Great job :) One little niggle though: At the end of the paragraph that explains the hello world's import statement, it says Repeated imports of the same file are of no import. Sounds like a typo snuck in there.
Re: reddit.com: first Chapter of TDPL available for free
Nick Sabalausky wrote: One little niggle though: At the end of the paragraph that explains the hello world's import statement, it says Repeated imports of the same file are of no import. Sounds like a typo snuck in there. Or a pun ;-P.
Re: reddit.com: first Chapter of TDPL available for free
On Mon, Aug 3, 2009 at 7:34 PM, Nick Sabalauskya...@a.a wrote: Andrei Alexandrescu seewebsiteforem...@erdani.org wrote in message news:h57mno$26g...@digitalmars.com... http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ (Don't tell anyone, but I plan to rewrite it.) Andrei I just read the first section and already I'm impressed with it. Great job :) One little niggle though: At the end of the paragraph that explains the hello world's import statement, it says Repeated imports of the same file are of no import. Sounds like a typo snuck in there. That's no typo; that's a pun!
Re: reddit.com: first Chapter of TDPL available for free
On Mon, Aug 3, 2009 at 7:40 PM, Robert Fraserfraseroftheni...@gmail.com wrote: Nick Sabalausky wrote: One little niggle though: At the end of the paragraph that explains the hello world's import statement, it says Repeated imports of the same file are of no import. Sounds like a typo snuck in there. Or a pun ;-P. The mailing list lag is killing me.
Re: reddit.com: first Chapter of TDPL available for free
Nick Sabalausky wrote: Andrei Alexandrescu seewebsiteforem...@erdani.org wrote in message news:h57mno$26g...@digitalmars.com... http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ (Don't tell anyone, but I plan to rewrite it.) Andrei I just read the first section and already I'm impressed with it. Great job :) One little niggle though: At the end of the paragraph that explains the hello world's import statement, it says Repeated imports of the same file are of no import. Sounds like a typo snuck in there. It's a pun... Andrei
Re: reddit.com: first Chapter of TDPL available for free
Andrei Alexandrescu wrote: http://www.reddit.com/r/programming/comments/975ng/diving_into_the_d_programming_language_tdpl/ Thanks for sharing it! Typos: in section 1.1, there are inchPerFoot's and inchperfoot's.
Re: reddit.com: first Chapter of TDPL available for free
Jarrett Billingsley wrote: That's no typo; That's no moon!