# Orthogonality

We have come a long way and introduced many new ideas, yet all these ideas are based on the primitive concepts of value, mode, context, coercion and phrase. These concepts are independent of each other, but their combination provides Algol 68 with a flexibility that few programming languages possess. For example, if a value of mode `INT` is required, such as in a trimmer or the bounds of the declaration of a multiple, then any unit which will yield an integer in that context will suffice. The consequence is that Algol 68 programs can be written in a wide variety of styles. Here is a simple example: given the problem of printing the sum of two numbers read from the keyboard, it could be programmed in two completely different ways. The conventional solution would be something like

       INT a,b;  read((a,b));
       print((a+b,newline))

but an equally valid solution is

       print(((INT a,b;
               read((a,b));
               a+b),newline))

Provided that what you write is legal Algol 68, you can adopt any approach you please. Orthogonality refers to the independence of the basic concepts in that you can combine them without side-effects.

Another consequence of that independence is that there are very few exceptions to the rules of the language. This makes the language much easier to learn.