February 24, 2016
On Tuesday, 23 February 2016 at 20:49:40 UTC, Timon Gehr wrote:
> On 23.02.2016 21:35, Ola Fosheim Grøstad wrote:
>> I find it ironic that Walter objects to reusing operators such as "<<"
>> while he is reusing "!" for templates
>
> No reusing and no irony here. "!" for template instantiation is a binary usage.

Wrong. Unary, postfix, prefix, mixfix does not matter. It still affects usability.

Definition for "operator":

«a symbol or function denoting an operation (e.g. ×, +).»

February 24, 2016
On Wednesday, 24 February 2016 at 08:46:40 UTC, wobbles wrote:
> On Wednesday, 24 February 2016 at 07:23:03 UTC, Suliman wrote:
>> On Wednesday, 24 February 2016 at 07:19:02 UTC, Walter Bright wrote:
> It's a matter of taste I think.
> I find 'and's and 'or's less readable than && and ||.
>
> I suspect that's because I'm used to looking at them.

Well, I use "&&" and not "and" in C++, although I think I ought to use "and" because long sequences of sigils is harder to separate. If anything the fact that C++ programmers don't use "and" and "or" shows how strong the effect of cultural influence is on "spelling".  I am pretty sure that if "&&" had been introduced later than "and", then the roles had been switched.

Interestingly Pony is enforcing parentheses on most operators, under the assumption that programmers often get precedence rules wrong. Which is good for correctness. They could probably loosen it up a bit, but it is better than what we see in the C-family of languages.


February 24, 2016
On Wednesday, 24 February 2016 at 10:03:19 UTC, Ola Fosheim Grøstad wrote:
>
> if(!a!(c,!d)(!e)){...}

Working through this,
!a, !d, and !e are unary operators
a!(x)(y) is the only template

Looks messy, but really isn't that hard to figure out.

I don't think !d makes sense as a template argument (unary not something usually doesn't produce a type). If you want it even easier to understand, how about:

alias acd = a!(c, d);
if(!(acd(!e)))

> a~=3;
> b=~3;

I agree that this is confusing. Only thing I would recommend is formatting and maybe adding parenthesis.

a ~= 3;
b = (~3);
February 24, 2016
On 24.02.2016 11:24, Ola Fosheim Grøstad wrote:
> On Tuesday, 23 February 2016 at 20:49:40 UTC, Timon Gehr wrote:
>> On 23.02.2016 21:35, Ola Fosheim Grøstad wrote:
>>> I find it ironic that Walter objects to reusing operators such as "<<"
>>> while he is reusing "!" for templates
>>
>> No reusing and no irony here. "!" for template instantiation is a
>> binary usage.
>
> Wrong.  Unary, postfix, prefix, mixfix does not matter. It still affects
> usability.
>
> Definition for "operator":
>
> «a symbol or function denoting an operation (e.g. ×, +).»
>

I was responding to a very specific statement, namely the one I quoted, if that was unclear.

It's obvious that Walter considers arity to be part of the identity of an operator. If you find pleasure in finding irony in misrepresented statements, feel free. I don't.
February 24, 2016
On Wednesday, 24 February 2016 at 21:12:23 UTC, Timon Gehr wrote:
> It's obvious that Walter considers arity to be part of the identity of an operator. If you find pleasure in finding irony in misrepresented statements, feel free. I don't.

There's nothing misrepresented in what I wrote. If you want arity to be part of the identity, you might as well including typing. That just a very convenient rewriting of reality, typical apologetic D-advocacy. The operator is the symbol and reusing it for something unrelated has a negative effect on usability.

You guys need to stop complaining about the insignificant splinters of C++ and start worrying about the beams that are stumbling blocks for D. C++ is alive and kicking...

February 24, 2016
On 24.02.2016 22:31, Ola Fosheim Grøstad wrote:
> That just a very convenient rewriting of reality,

The ultimate validity of the premise does not matter for what I objected to. You were trying to paint Walter's position internally inconsistent in a very specific way that just does not hold water.
February 24, 2016
On Wednesday, 24 February 2016 at 21:56:12 UTC, Timon Gehr wrote:
> The ultimate validity of the premise does not matter for what I objected to. You were trying to paint Walter's position internally inconsistent in a very specific way that just does not hold water.

Sigh. I am not trying to paint anything, not even a bikeshed. I am merely observing the following:

1. I've never had any issues related to "<<" for iostream.

2. I am rather annoyed by the inconsistent use of symbols in D.

3. Objecting to "<<" for iostream while using symbols incosistently yourself IS ironic.


What is and isn't ironic, isn't a matter of «validity of the premise». It is a matter of interpretation. Not your interpretation. Mine.

Also, the usability issues concerning symbols isn't related to mathematical definitions, but is related to the mnemonics of the symbols, or the interpretation of them, by a human being. Not by a machine.

As such a useful mnemonic for "<<" is that it is for moving stuff to the left. Which could work equally well for a stream as it does for bits.

There is no apparent overlap between the mnemonics for "!" in the context of templates or bools. Same with "~", which in the context of C means "flip the bits", with the wave being a mnemonic for flipping.

I find it ironic that iostream is more consistent with the mnemonics of the symbols than D is. Deal with it. Don't defend it. Fix it.

February 24, 2016
On 24.02.2016 23:10, Ola Fosheim Grøstad wrote:
> On Wednesday, 24 February 2016 at 21:56:12 UTC, Timon Gehr wrote:
>> The ultimate validity of the premise does not matter for what I
>> objected to. You were trying to paint Walter's position internally
>> inconsistent in a very specific way that just does not hold water.
>
> Sigh. I am not trying to paint anything, not even a bikeshed. I am
> merely observing the following:
>
> 1. I've never had any issues related to "<<" for iostream.
> ...

Note that I am not the one complaining about overloaded tokens.

> 2. I am rather annoyed by the inconsistent use of symbols in D.
> ...

It's not inconsistent. It's overloading at the lexical level that gets resolved at the level of the grammar.

> 3. Objecting to "<<" for iostream while using symbols incosistently
> yourself IS ironic.
>
>
> What is and isn't ironic, isn't a matter of «validity of the premise».

You misunderstand what that part of the sentence refers to. (It's what I quoted.)

> It is a matter of interpretation. Not your interpretation. Mine.
> ...

You might want to keep those aspects to yourself or express their subjectivity more explicitly if you don't want them to be mistaken for a point being made that resembles points being made using the same wording.

> Also, the usability issues concerning symbols isn't related to
> mathematical definitions, but is related to the mnemonics of the
> symbols, or the interpretation of them, by a human being. Not by a machine.
>
> As such a useful mnemonic for "<<" is that it is for moving stuff to the
> left. Which could work equally well for a stream as it does for bits.
>
> There is no apparent overlap between the mnemonics for "!" in the
> context of templates or bools. Same with "~", which in the context of C
> means "flip the bits",

In the context of C, "*" means either "dereference" or "multiply". "&" means either "take address" or "bitwise and".

> with the wave being a mnemonic for flipping.
> ...

Uh...

> I find it ironic that iostream is more consistent with the mnemonics of
> the symbols than D is. Deal with it.  Don't defend it. Fix it.
>

I'm afraid I personally don't care too much about any of that.

Also, I'm not defending anything. I was attacking annoying rhetoric.
Not anymore though. I'm done here.
February 25, 2016
On Wednesday, 24 February 2016 at 22:55:11 UTC, Timon Gehr wrote:
> You misunderstand what that part of the sentence refers to. (It's what I quoted.)

This is what you quoted:

«I find it ironic that Walter objects to reusing operators such as "<<"  while he is reusing "!" for templates»


> You might want to keep those aspects to yourself or express

You don't get to tell me what I want or do not want to express. You're an obnoxious kid. :-)


> their subjectivity more explicitly if you don't want them to be

"I find it ironic".

What more do you need?


> In the context of C, "*" means either "dereference" or "multiply". "&" means either "take address" or "bitwise and".

And D blindly copies those mistakes. How does C's mistakes have any relevance to this?


> Also, I'm not defending anything. I was attacking annoying rhetoric.

I find it ironic that you keep trying to make your own subjectivity look objective when it is rather obvious that your are engaging in blatant advocacy which just sement the idea that the design rationale behind D2's syntax is sound. It isn't. It breaks with basic usability principles.

The usability of D is not improving, and complaining about other languages' minor issues won't fix it. There is way too much resistance to fixing the language, both interface and semantics. That keeps D at a hobby level.

Or to put it bluntly: C, C++ and Rust having crappy syntaxes does not make D look a whole lot better. In order to do better, you have to be better. C/C++ are bogged down with legacy. There is no reason for D to be.

What keeps D from improving comes down to this: stubborn ignorance.

Offensive, but true.

February 24, 2016
On 2/24/2016 9:43 PM, Ola Fosheim Grøstad wrote:
> You're an obnoxious kid. :-)

Such statements are not welcome here. Please stop.