Angle
An angle, its unit spelled at the call site: 90.deg, 0.8.rad.
The type exists so an API taking an angle never accepts a bare Double of ambiguous unit. Deliberately no trigonometry — read radians at use sites (sin(angle.radians)). Arithmetic, comparison, and equality are all raw, with no wrapping and no SCALE rounding — an angle is a parameter, not a stored CGA component — so a sum past a full turn keeps its face value and 370.deg > 10.deg holds. canonical wraps a value to its single-turn representative, and the module-level round function makes identity decisions over angles just as it does over raw components.