> It used to be that Fortran was "declarative" because you no longer had to write machine code and schedule instructions by hand!
Maybe, but even at that time, pure mathematics was still more declarative than Fortran, so it's not a relative term.
> In truth, it is about how many, not just the kind, details can be omitted.
I think it's about the kind of details that can be omitted. If I can omit implementation details (how to execute my code on a given machine) from my function declaration, then that is a declarative function.
Again, an implementation is just a more detailed specification. I can say "make me a cake", or I could provide a high level theory on cake baking so my cake gets made, or a detailed recipe, or I can describe all the movements needed exactly. Which one is declarative?
There are many levels in describing what one wants, that there is somehow a magical sharp line where it becomes "how" is not reasonable.
Maybe, but even at that time, pure mathematics was still more declarative than Fortran, so it's not a relative term.
> In truth, it is about how many, not just the kind, details can be omitted.
I think it's about the kind of details that can be omitted. If I can omit implementation details (how to execute my code on a given machine) from my function declaration, then that is a declarative function.