Nick Sabalausky wrote:
Yea, that's a good example of why I've grown a distaste towards
hard-and-fast religious design strategies. The designer inevitably comes
across cases where it just doesn't work particularly well, and then they're
forced to either stay true to their misguided principles by accepting an
awkward problematic design, or contradict their alleged principles and go
with a better design. And when they do the latter, that runs the risk of
causing problems in other areas that had been relying on the old principle
being rigidly followed.
D has design principles, but those principles are often contradictory. I don't
see a good reason to follow a design principle out of principle if it destroys
the utility of the language.
For example, consider:
version (unittest)
'unittest' is a keyword, not an identifier. Making this work requires a special
case in the grammar. But the alternatives,
version (Unittest)
version (unit_test)
version (unittests)
etc. are all much worse than simply violating a principle and putting the
special case in.