package listpkg is type List is private; -- A more descriptive name procedure clear(l: in out List); -- Delete all nodes in list procedure makeList(first, last: Natural; l: out List); -- Creates a list of integers from first to last procedure putList(l: List); -- Print the list function equal(l, r: List) return Boolean; -- Compare entire list, not just pointers l and r procedure copy(dest: out List; source: In List); -- Make dest point to a deep copy of souce -- Current version makes a shallow copy private type Node; type List is access Node; type Node is record val: Natural; next: List; end record; end listpkg;