Can you do this in D?

Jacob Carlborg doob at me.com
Thu Jul 26 05:10:35 PDT 2012


On 2012-07-26 13:20, Wes wrote:
> Can you do this in D? If not then what other language?

I'm pretty sure you can do all this using Ruby.

> 1. Can you get a list of all classes and variables in the current
> scope e.g. __traits()?

In general, no. But you can get a list of all members in a module or 
class scope. Just use __traits(allMembers, ...);

> 2. Can you statically iterate over every field of a class?
> It seems like the only returns are string lists from __traits().
> I basically am interested in being able to generate a
> PrettyPrint/Serializable/Hash template without passing in every
> single field.

Yes, if __traits doesn't work it works with .tupleof. For serialization 
Orange is available:

https://github.com/jacob-carlborg/orange

> 3. Is there any way of executing code or programs during compile
> time?
> I've seen an example of CTFE (Compile Time Function Evaluation),
> although I'm unsure if this works for stuff like classes.
> However, I am considering more advanced execution (not constants)
> such as printing to a file during compiling for stuff like how
> long compiling a certain function/template takes.

Classes should work. It's not possible to print to a file.

> 4. Is there anything like Go/Erlang channels? (synchronous queues)
> I assume that synchronized blocks with a shared global dynamic
> array would be the solution without the special syntax sugar?

I'm not sure. but you could have a look at std.concurrency. 
std.parallelism might be of interest as well.

This seems to good to read as well: 
http://www.informit.com/articles/article.aspx?p=1609144

-- 
/Jacob Carlborg


More information about the Digitalmars-d mailing list