On 2013-11-11 09:28, simendsjo wrote:
I agree examples would help a lot. Trying to define what information actually exists within these types would also help a lot.
I can tell you right now that I haven't figured out everything, far from everything.
In the first example, would Ast!(bool) be something like this? opBinary!"==" left = opBinary!"+" left = Literal type = int value = 1 right = Literal type = int value = 2 right = Literal type = int value = 4 Would there be helpers for matching part of the structure?
I don't know. As I said above, I haven't figured out everything. I don't see any support for this in the language. But of course, there can be library functions that help with this.
The same applies to the other types used - what information should they have?
Suggestions are welcome. Also, see my reply to bearophile http://forum.dlang.org/thread/l5otb1$1dhi$1...@digitalmars.com#post-l5q1p5:242bs4:241:40digitalmars.com
As for examples, here's a couple of suggestions: * Expression to prefix notation * Expression to SQL * AutoImplement properties (like C#)
Would that be something like the attribute macro example? http://wiki.dlang.org/DIP50#Attribute_macros
* Number intervals, like "int i = int[10..20];" where only 10 to 20 are legal values * Discriminated union * Pattern matching
Pattern matching usually requires new syntax, which this proposal does not support.
-- /Jacob Carlborg