Re: reddit.com: first Chapter of TDPL available for free

2009-08-08 Thread Jarrett Billingsley
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

2009-08-08 Thread Jos van Uden

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

2009-08-04 Thread Andrei Alexandrescu
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

2009-08-04 Thread Andrei Alexandrescu

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

2009-08-03 Thread Moritz Warning
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

2009-08-03 Thread Nick Sabalausky
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

2009-08-03 Thread Robert Fraser

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

2009-08-03 Thread Jarrett Billingsley
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

2009-08-03 Thread Jarrett Billingsley
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

2009-08-03 Thread Andrei Alexandrescu

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

2009-08-03 Thread MIURA Masahiro
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

2009-08-03 Thread Walter Bright

Jarrett Billingsley wrote:

That's no typo;


That's no moon!