The diagram shows that every F procedure, either a subroutine or a function, is contained in a module. Functions Are Not Subroutines In F, a distinction is made between functions and subroutines. The intent is required on all procedure arguments, allowing the compiler to check for misuse and forcing both the beginner and professional to document the intentions. The intrinsic types in F are integer, real, complex, character and logical. For example, a person can be constructed to have a name, height, phone number and pointer to the next person.
Users can define operators which operate on intrinsic and user-defined types.
The attributes of an intrinsic or user-defined type in F are shown in Table 2 . Pointers are strongly typed. That is, pointers can point only to objects that are targets. Although this idea makes solid pedagogical sense, the words pointer and target originated for the purpose of better compiler optimization. A sophisticated array language facilitates operations on whole arrays, contiguous and noncontiguous sections and slices of arrays.