DIP 50 - AST macros
Kapps
opantm2+spam at gmail.com
Mon Nov 18 11:21:33 PST 2013
On Monday, 18 November 2013 at 16:03:54 UTC, IgorStepanov wrote:
>
> How macros implemented in C#?
> I know, that C# have linq which can translate lambda expression
> to SQL WHERE condition. For example s => s.Number > 2 &&
> s.Number < 20 can be translated to ... WHERE s.Number > 2 AND
> s.Number < 20
>
> It is interesting function, because it allow to write hard code
> in preferred language (C#, D) instead of unpreferred (SQL).
> Also this code hides poorly standardized SQL for the
> well-standardized language.
>
> And С# still not sinking under tons of macro. May be C# has
> some limitations for ast macros. May be they allowed only for
> lambda?
>
> This is a general macro-feature which I had like to see in D.
C# doesn't have macros. Linq to Sql is implemented using
expression trees. Essentially, it allows the compiler to generate
an expression tree of the lambda expression which your library
parses to do some work. It doesn't inject any code, and it's done
at runtime. I could be wrong about the exact details, but
essentially it comes down to the compiler passing in an
expression tree into your method, and then your method parsing it
at runtime and doing something with the results; it can't be used
to generate new code.
More information about the Digitalmars-d
mailing list