The Type-system
From the version 2.0 instantOLAP uses a type-system (known from programming-languages), where all values belong to a specific type. With the new type-system, instantOLAP can perform better syntax-checks and give better error-messages for your expressions. Also, functions can be combined in a much better way now, because the type-system now exactly controls, which function can be used as argument for other functions.
The type-system is organized in a hierarchy, with types, subtypes and super-types. Some types are createable, which means values with exactly this type can be created. Other types are only "help-types", which group other types to a super-type but can never have instances. "Value" is such a help-type.
A super-type of a type is another type which lies above the type in the hierarchy. E.g. "Value" is a super-type of "Integer". A subtype is a type which, lies under a type in the hierarchy. If a functions expects an argument of type X you can pass any value which has exactly this type X or a subtype of X. E.g. a function expecting an argument of the type "Number" would accept both values of the type "Integer" or "Double".
The following graphs shows all types in instantOLAP and their relationships:
Note that dimensions automatically become types in the graph and are always a subtype of "Key". Because of this, each function which expects arguments of the type "Key" will accepts keys from every dimensions.

