Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact


The book is divided into 2 sections: D and Tango. Each section consists of a number of items related to a specific feature. Each item consists of the following sections:

  • The What - a brief introduction to the feature, explaining the purpose and/or primary characteristics.
  • The How - a short code snippet illustrating the use of the feature
  • The Overview - gives specific, useful details about the feature, such as how it differs from similar features in other languages, common pitfalls to avoid, different use-cases, and so on.

The What and How sections should, together, be only one page long when possible but no more than two when necessary. The Overview section should be long enough to serve its purpose for that feature. Most would likely be only one page, but complex topics could extend to 3 pages. I suspect 3 should be the maximum in the D section, but 4 in the Tango section since each item is a package.


  1. D
    1. Main
      • The What - the purpose of main in a D program
      • The How - "Hello World" example
      • The Overview - acceptable ways to declare main, a note about WinMain in D
    2. Basic Types
      • The What - a table of types and their sizes
      • The How - example declarations, including using auto
      • The Overview - a few details about default initializers, auto, and pointer pitfalls
    3. Properties
      • The What - a listing of properties for the basic types
      • The How - examples of how to access properties
      • The Overview - custom types can have properties, pitfalls (i.e., not an l-value)
    4. Functions
      • The What - function syntax, parameter attributes (in, ref, out)
      • The How - example function declarations
      • The Overview - pass by value vs. pass by reference and how they are affected by the parameter attributes, a bit about D name mangling/calling convention and the different flavors of extern
    5. Arrays
      • The What - a listing of array features
      • The How - different examples of declaring and using arrays
      • The Overview - array properties, the $ shortcut, pitfalls
    6. Standard Loops
      • The What - yes, D has while, for, and do..while
      • The How - examples of each
      • The Overview - yes, loops can use continue and break just like other languages
    7. Special Loops
      • The What - foreach, foreach_reverse
      • The How - examples of using each
      • The Overview - using foreach with an index, using with attributes such as ref
    8. so on and so forth
  2. Tango
    1. Introduction
      • The What - Tango's reason for existence
      • The How - obtaining and installing Tango
      • The Overview - why use Tango, philosophy, a list of all packages
    2. 2..n - one item for each Tango package
      • The What - the purpose of the package
      • The How - short example using the most common modules/classes/features of the package
      • The Overview - the nutshell description of the package, special things to be aware of (whisper syntax and other tricks)

This is just to give an idea of what I'm on about. The order of the items in the D section, or what exactly should go in each subsection, is wholly debatable. Of course, each item should be assigned a fixed number of pages (2~n) so that we can tally up 150 and know what we have to work with.