The same values in HList (Nominator or Denominator) makes different types if they are present in different order(eg. Kilogram :: Meter is not Meter :: Kilogram)
object Foo {
import UnitSupport._
type Momentum = Units[Kilogram :: Meter :: HNil, Second :: HNil]
object Momentum extends ComplexUnit[Kilogram :: Meter :: HNil, Second :: HNil]
type MomentumAlias = Units[Meter :: Kilogram :: HNil, Second :: HNil]
object MomentumAlias extends ComplexUnit[Meter :: Kilogram :: HNil, Second :: HNil]
val momentum: MomentumAlias = 1.as(Momentum) //will not compile
}
The same values in HList (Nominator or Denominator) makes different types if they are present in different order(eg.
Kilogram :: Meteris notMeter :: Kilogram)