DIP 50 - AST macros
simendsjo
simendsjo at gmail.com
Mon Nov 11 01:23:52 PST 2013
On Monday, 11 November 2013 at 09:02:01 UTC, bearophile wrote:
> Jacob Carlborg:
>
>> One of my favorite examples is the database query:
>>
>> auto person = Person.where(e => e.name == "John");
>>
>> Which translates to the following SQL:
>>
>> select * from person where name = 'John'
>
> Can't you do the same thing with functions similar (same API
> but different semantics) to std.algorithm ones that generate
> expression templates?
>
> auto person = persons.filter!(e => e.name == "John");
The problem here is that a library need to know that it has to
create
SELECT * FROM persons WHERE name = 'John';
and not
SELECT * FROM persons;
and filter it locally.
So it needs a way to inspect the body of the delegate and extract
"name" "==" and "John".
> --------
>
> simendsjo:
>
>> * Number intervals, like "int i = int[10..20];" where only 10
>> to 20 are legal values
>
> What's wrong with this syntax that doesn't reqiire macros? It's
> more uniform with the rest of the language:
>
> Ranged!(int, 10, 20) i;
>
> Bye,
> bearophile
Nothing wrong with it, I was just trying to come up with some
examples. I don't say they're necessarily good :)
More information about the Digitalmars-d
mailing list