-- filename: list.ads 2:25PM 10/25/95 -- generic (by element type) list package with extendable listnode generic type element is private; package list is type pointer is private; -- functions that sample but do not modify lists -- function cons(x:in element; toList : in pointer) return pointer; function first(ofList: in pointer) return element; function rest(ofList: in pointer) return pointer; function Empty return pointer; function isEmpty(L: in pointer) return boolean; function isEqual(L1,L2: in pointer) return boolean; -- procedures that side effect (change the state of) lists -- procedure insert(value:in element; afterX, inList: in out pointer); procedure setFirst(L: in out pointer; NewV: in Element); procedure setRest(L: in out pointer; NewR: in pointer); procedure delete(X, precededByY, inList: in out pointer); NoElements, Overflow: exception; private type listnode; type pointer is access listnode; type listnode is record data : Element; next : pointer; end record; end list;