An important feature of the more recent data models, such as the semantic and object-oriented data models, is the ability to store program code as well as data, and to access both uniformly. The most common form for storing such code is the ``method'' - a fragment of program code which is attached to a particular class, and which encapsulates some part of the behaviour of that class. P/FDM also allows the definition of persistent methods, but, unlike other data models, a clear distinction is made between methods which compute data without making any state changes and which are therefore referentially transparent, and methods which do involve side-effecting actions and which cannot be treated functionally. These two kinds of method are called function methods (or derived functions) and action methods respectively. Function methods are invoked using exactly the same mechanism for retrieving the value of the stored function, whether from Prolog or Daplex, and action methods are called in the same manner as the print action of Daplex, or by using a special primitive called perform/2 from Prolog. Both may be defined either in Daplex or Prolog.