Simplify common unit if label has just one unit #338
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
If we don't do this, it's a weird situation: we end up with a
CommonUnit<A, B, ...>
type, whose label is just the label for asingle simple unit
X
... which is quantity-equivalent toCommonUnit<A, B, ...>
. This means that when we print it, it willlook just like it is
X
, and people might get confused.With this PR, when we're in this situation, we simply make
CommonUnitT<A, B, ...>
(note theT
, i.e., "compute the common unit")return
X
itself!To do this, we could try to piggyback on the label definition. I
found that way introduces some really confusing circular dependencies. I
find it is much simpler to simply count the distinct unscaled units in
the common unit, and do the simplification exactly when we get down to
only one.
Helps #105.