Idiomatic D?

Justin Whear justin at economicmodeling.com
Mon Jun 18 09:59:15 PDT 2012


On Mon, 18 Jun 2012 18:22:34 +0200, Matt Diesel wrote:

> Sorry, forgot to post the code:
> 
> http://pastie.org/4109337
> 
> Is there no way to edit posts?

A couple of observations:
 - According to the D style guide (http://dlang.org/dstyle.html), you 
should prefer to capitalize class and struct names, constants, and 
template parameters while starting functions and variables lowercase. 
Your code betrays your C# experience (I was very similar for a long time) 
in that you capitalize your method names. Obviously this is a more 
subjective thing, but your code will blend better with the standard 
library if you follow the guide.
 - Read up on ranges. I've written a number of lexers in the past few 
years in D and the lazy range idiom works really great for this use case. 
The basic idea is to model the lexer as a range of tokens which the 
parser (or anything else) can consume. Turns out you can composite a 
parser, syntax highlighter, etc. with map/reduce and some help from 
std.functional. The result is super flexible and can potentially be 
parallelized (your mileage may vary).

Overall your code was pretty easy to follow and seemed fairly well 
written.


More information about the Digitalmars-d-learn mailing list