<> <> <> <> RefQ: CEDAR DEFINITIONS = { <> <> Queue: TYPE = LIST OF REF; Enqueue: PROC [queue: Queue, value: REF] RETURNS [qPlusValue: Queue]; <> <<>> EnqueueQ: PROC [queue: Queue, newQ: LIST OF REF] RETURNS [longerQ: Queue]; <> DequeueMode: TYPE = { remove, truncate }; Dequeue: PROC [queue: Queue, subqueue: Queue_NIL, mode: DequeueMode_remove] RETURNS [shorterQ: Queue]; <> <> <> <> <<>> MapType: TYPE = PROC[subqueue: Queue] RETURNS[quit: BOOL_FALSE]; Map: PROC[queue: Queue, p: MapType] RETURNS[quit: BOOL]; <> }. <> <> <<>>