Short list with things to finish for D2
Don
nospam at nospam.com
Wed Nov 25 00:14:51 PST 2009
aarti_pl wrote:
> Don pisze:
>>
>>> Additionally in my framework you can pass around parts of SQL e.g. :
>>> WhereExpression exp = Where(More(visitcards.id, 100));
>>>
>>> You basically *CAN NOT* do it when just using strings.
>>
>> Of course you can define a where clause using strings.
>> (I'm not sure when you'd want to, though. I suspect that the fact that
>> you can do it in your framework, is an implementation detail rather
>> than a design goal. It's easy to think of uses for run-time generated
>> naked WHERE clauses, but much harder for compile-time ones).
>
>
> Not exactly. At least it was not the case last time we talked about it:
>
> *I will give here only NG post numbers*
>
> 79272 Domain Specific Languages in D; was: C++, D: Dinosaurs?
> 81026 Operator overloading
> 81078
> 81393
>
> And you finally agreed with me that it is not possible. So I take it
> proven :-)
> 81424
I believe I was agreeing that it wasn't possible to do it with a single
SQL ctfe function.
>
> Possibility to split whole SQL statement into parts is useful. You can
> mix & match these parts together as you want. It is similar as you want
> to split you big chunk of code into smaller parts. You can for example
> make separate expressions objects and then put them one by one into
> Where().
>
>> `AND` is not operator overloading in the traditional sense. This is
>> something else. You're proposing a whole new infix notation, and it's
>> difficult to evaluate it without knowing how it would work.
>
> Well, with Andrei's proposition it is obvious for me that it should be
> generalized. I stated it already in: 81392 (almost one year ago)
>
> I will cite part of this e-mail:
>
> *<citation>*
> Exactly. My first thoughts was to allow defining infix
> keywords/operators in a similar way as today we can define prefix
> operators:
> myFunc a b
>
> or just:
> myFunc(a, b);
>
> Why? Because they are use cases where infix notation is much, much more
> natural than prefix notation.
>
> So we still need:
>
> 1. a myFunc b - infix operator
> 2. a b myFunc - postfix operator
> *</citation>*
>
> After reading my old e-mail it seems that it can be further generalized:
> prefix(tuple_args)
> (tuple_args)postfix
> (tuple_args)infix(tuple_args)
>
> Ok. Just a thought :-)
To quote something I said in that last post:
"My point is simply: creating syntax trees is what
you're using operator overloading for. You're actually not creating
operations."
> Some more about more precise definition of this feature (proposals, to
> think about it):
> 1. I don't agree that it is something different than traditional
> operator overloading. It is just generalization.
> 2. After including Andrei's proposal the biggest part of this feature
> will be already in language.
> 3. The only think to define is just how the caller side should like:
> a. Always demand `` when using operator overloading; (Pros: no abuse of
> operators - you always know when operator overloading is involved; Cons:
> doesn't look so good, especially in cases where you would expect plain
> symbols)
> b. Don't demand `` in case of some standard operators like <>+-*/ etc.
> In other cases demand ``(Pros: Looks better; Cons: you will not always
> know that operator overloading is involved)
> c. Demand `` always when there is standard operator defined or operator
> is not symbol, but identifier.
> d. Don't allow redefinition of same operator
>
> Above concepts must be discussed, but it seems that there is not enough
> courage in NG to change current situation.
Please. It's been very clearly stated, long ago, that : MACROS ARE
DEFERRED TO D3.
> Well it's strange that the feature is called 'operator overloading' -
> it's quite obvious that it's about defining some special functions. And
> IMHO some other languages got it right.
IMHO, equating 'operator overloading' with special functions is a
colossal mistake. I'm convinced that C++ got it badly wrong.
>> And I still don't think it looks terribly good for SQL. With:
>> id `>` 100
>> users would always be thinking, "why can't I just write id > 100 ?
>> That ` is so annoying!"
>
> Please believe me: it's 3000 times better than current situation.
I don't disagree with that. I just think we should aim higher.
More information about the Digitalmars-d
mailing list