-- filename: listn.ads 11:41AM 9/7/95 generic type element is private; package listn 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); private type listnode; type pointer is access listnode'class; type listnode is tagged record data : element; next : pointer; end record; end listn;