A unit type is a type that has only one single value.
In Fuzion, unit types can be used to structure an application similar to Java/C# packages as a means of encapsulation and information hiding. Also, they can be used to avoid overhead since assigning a value of a unit type is a NOP. Used as a generic argument, one can use these types to specialize code.
The unit type features
product are used to specialize the generic
accum to calculate the total sum or the total product of an
array of integers.
The fuzion compiler will specialize the calls to
produce code similar to the following. The unit type instances
Another Application of unit types are library features. Say you have a set of trigonometry functions:
Alternatively, by making complex inherit from
trigo, we can add
all of its features to our namespace: