The meaning of an expression is its implication, not its definition. The implication must be decided by the reader. This is either done by strict definition, or by arbitrary inference. Inference is a powerful feature of language, because it expands the set implications that can be expressed without abstracting the language. Without inference and metaphor, we must instead create a tower of well-defined abstractions that rule over us; having already determined what implications are relevant: objective truth. With inference and metaphor, the writer/speaker can articulate their implications with familiar language; relying on the reader/listener to infer from the expected relevant perspective: subjective truth.
Essentially the tradeoff isn't whether or not you get precision, but whether that precision can be shared by the writer and the reader, or be managed entirely by the writer. Defined abstractions allow the writer to be unambiguous to anyone (objective), while inference allows the writer to offload that responsibility to the context and perspective of the reader (subjective).
Does that make sense?
> I think this is exactly your point
Yes, it is.
Another useful word would be "direct", or maybe "concrete". A metaphor allows us to get right to the point, instead of going up the ladder of abstraction. Alternatively, we can use well-defined abstractions, like formal mathematics, to be precise in an abstract way.
I tried to lay it out, but I'm (ironically) using objectively defined abstractions to do so...
Metaphor is what allows a story's implications to be taken out of an expression, and placed into the interpreter itself. An interpreter that arbitrarily decides what an expression can mean does so by bringing its own implications. This way, instead of forcing an expression to articulate those implications, the expression can imply them instead. The interpreter fills in the gap.
If we formalize a story's implications, that means we create a decided interpreter: a collection of assumptions that impose a specific perspective on the reader. This is how programming languages work: any expression has a clearly defined meaning, because it will only be given to that language's interpreter. The disadvantage is that you cannot write ambiguous expressions, because ambiguity would require the potential for more than one perspective, which would require more than one interpreter.
My idea is to create many ad-hoc interpreters, so that any of them can be chosen to interpret a given expression. This way, the chosen perspective is computable, while the expression can be ambiguous and metaphorical. The only "hard" problem left is the selection of interpreter, which I expect to be manageable.