Effects on Storage


  • Action ::= create | destroy | update | inspect
  • Datum ::= Cell | Storable

  The Kernel AN­2 notation for efects on storage differs from the corresponding imperative facet of AN­1. The main change is that in AN­2, cells of storage are no longer reusable: in any performance, each cell can only be given at most once by the create action, even if the use of the cell is subsequently stopped explicitly by the action destroy. In AN­1, reserved cells that became 'unreserved' were regarded as no longer in the storage, and could be reserved again.

  Another difference is that in AN­2, cells are always initialized when created (with a given storable value), and there is no built­in support for a distinct 'uninitialized' value. Moreover, the AN­1 action 'unstore' was seldom used, and has been dropped in Kernel AN­2.

  Since there are no yielders in Kernel AN­2, update has to be given a cell and a storable value as data, and inspection of the value stored in a cell has to be an action. There is no AN­2 action corresponding to the AN­1 yielder current storage, which has not been of much use in practice.

  A further diference between the treatment of storage in AN­2 compared to that in AN­1 is that storage is in principle global, and cells created by one agent may be updated, inspected, or even destroyed by other agents.




   
Data| Flow of Data and Control| Scopes of Bindings| Interactive Processes