Prop.mesa
Copyright Ó 1984, 1985, 1987, 1991 by Xerox Corporation. All rights reserved.
Michael Plass, January 7, 1987 11:11:40 am PST
Doug Wyatt, January 19, 1987 5:42:34 pm PST
Implements immutable, sharable property lists.
Prop: CEDAR DEFINITIONS
~ BEGIN
PropList: TYPE ~ LIST OF Pair;
Pair: TYPE ~ RECORD [key: REF, val: REF];
Put: PROC [propList: PropList, key: REF, val: REF] RETURNS [PropList];
Returns a new list which contains (key, val). Get[Put[anyPropList, key, val], key]=val.
Get: PROC [propList: PropList, key: REF] RETURNS [val: REF];
Returns val associated with key, NIL if none. Uses REF equality to compare keys.
Rem: PROC [propList: PropList, key: REF] RETURNS [PropList];
Returns a new list which does not contain key. Equivalent to Put[propList, key, NIL].
MapAction: TYPE ~ PROC [key: REF, val: REF] RETURNS [quit: BOOL ¬ FALSE];
Map: PROC [propList: PropList, action: MapAction] RETURNS [BOOL];
Enumerates the (key, val) pairs in the list; applies action to each pair until action returns TRUE or no more pairs; returns TRUE if some action returns TRUE.
END.