Вид.Вы можете легко кодировать единицы СИ, используя целочисленное представление типов в кортеже показателей.См. http://svn.assembla.com/svn/metascala/src/metascala/Units.scala для примера реализации.
Также должна быть возможность поддержки расширяемой системы единиц, если единицы кодируются как TList
пар типа единицы и целого числа (дляНапример, ((M, _1), (S, _2))
, где M <: Unit
и S <: Unit
).Вычисление типов для количественных операций становится немного более сложным в этой кодировке.
Что касается производительности, всегда будут накладные расходы памяти для переноса значения в тип, содержащий информацию о единицах.Однако в реальных операциях, вероятно, нет снижения производительности, так как все проверки модулей выполняются во время компиляции.