I don't like to think of DM as a stepping stone engine, though quite honestly that's exactly what it is, so instead I consider this a "feature" of DM, and whilst it might be bad practice or not even possible in other languages, it's perfectly fine here, quick, easy, fast and reliable.
Bad practice is never perfectly fine, by definition. Functional sure, but not fine.
Quick/fast: Not as much as you think. It adds time to the compilation and basically ruins your ability to make the game extensible. IMO it's no quicker at all than doing it a better way, and in the long run it will bite you.
Easy: The one virtue of this approach is that it's easy to understand. But in the end that's often not as useful.
Reliable: Also less than you'd think. Locking everything into a type tree in cases where it isn't necessary limits your ability to make changes later.
I understand it, I understand the concept, I understand how it works.
But... why though? Perhaps in other languages the "types as a database" method isn't possible... but... this isn't other languages? FA made a fair few valid arguments for why this is, whilst not really awkward, just, extra hassle for no real gain, within the context of DM.
I don't like to think of DM as a stepping stone engine, though quite honestly that's exactly what it is, so instead I consider this a "feature" of DM, and whilst it might be bad practice or not even possible in other languages, it's perfectly fine here, quick, easy, fast and reliable.
I don't want to argue with Ter13 sempai but, maximumovershrug.