DefUnit provides macros that allow you to quickly create a module that defines a set of core units (SI, FPS, currency, whatever) for its users. The macros create documentation attributes, conversion operators and type specs that allow Dialyzer to detect incompatible unit assignments at compile time.