On Tuesday, 13 November 2018 at 07:13:01 UTC, NoMoreBugs wrote:

You nailed it on the head.

The only sensible course of action, therefore, is to give programmers the option to disable implicit conversions, completely (or if doable, more precisely).

And while you're thinking about how to do that, can you also please think about how to give the programmer the option to enforce privacy on variable/method within a module.

Programmers just want to be able to write code that is more likely to be correct, than not, and have the compiler catch it when it's not.

You want to attract such programmers, or not?

ok...not such a great idea (the compiler switch), after I thought more about that idea.

but some sort of annotation, and the programmers intent could become *much* clearer (allowing the programmer - and those reading it - to better reason about the correctness of the code):

bool(this) b; // compiler not allowed to do implicit conversions when assigning on b double(this) d; // compiler not allowed to do implicit conversions when assigning to d

class C  //(or struct)
{
private(this) password; // compiler will not allow other code outside of this type, // (but in the same module) to directly access password.
}


i.e (this) is just an annotation, for saying:

"I own this type, and the type needs to stay the way it's defined - no exceptions".

Too much? The language could not handle it? The programmer would never want it?


Reply via email to