Capturing needs of multi-platform, and multi-threaded development, Modula-3 comes with a comprehensive standard. Here, we only describe the most basic interfaces. For more information, see the interfaces included in the public packages installed on your system.
Many interfaces define a type named "T", for example, Text.T, Rd.T, Wr.T. The type "T" in an interface is called the principle type of that interface by convention; it usually denotes the main abstraction exported by an interface.
While inside interfaces, procedures refer to principle types (or other declarations) in that interface without a qualification, such as:
INTERFACE Wr; TYPE T = ...; PROCEDURE PutText (wr: T; string: TEXT) RAISES ...;
If you import an interface, however, via the normal use of IMPORT clause, you must qualify the name, i.e.,
MODULE Main; IMPORT Wr;
VAR wr: Wr.T := ...; BEGIN Wr.PutText (wr, "Hello"); END Main.