Yeah but your examples are not ambiguous if you consider that the user knows whether a is a function or a variable. Something I think is a very basic requirement when working with code. But if a is a 0-ary function, it is actually ambiguous, a shift-reduce conflict in the parser
The point of my example was, that if you read someone elses code (or for some other reason, don't know all idents), then when you have the "specialize" keyword, it gives you valuable extra info, that you may not have.
And without the keyword that info is not available (from the immediate context), you can not deduct it from the syntax alone.