On 4/11/2017 4:39 AM, rjframe wrote:
I have no problem with this specific change, but this method of solving
problems is going to turn D into a horrible language with all kinds of
weird edge cases. I left Python for D mostly because the language was
becoming one hack built on top of another; it would be nice if D could
avoid that path. The occasional kludge may be necessary, but it shouldn't
be normal or the first thought.
On the other hand, overly principled languages tend to not be as successful,
because what people need to do with programs is often dirty.
Monads, and "functional reactive programming", are obtuse things that come about
when a functional programming language requires 100% purity and immutability.
Back in the 80's, like everyone else, I went about creating a GUI user interface
library. I discovered something interesting - what is orthogonal and consistent
to a computer is anything but when dealing with people. What people view as
orthogonal and consistent is a rat's nest of exceptions in the code to implement
it. This is what makes a user interface library fiendishly difficult to pull off.
Language design is like that, too.
I hear what you're saying, and agree in principle. That is why this feature
comes with no new syntax, and existing code should "just work" with it to the
largest extent possible.