Program a function outline-copy which makes a deep copy of a list structure. Non-list data in the list should all be translated to a symbol, such as '-. You should be able to handle both proper lists and improper lists.
As an example:
(outline-copy '((a b c) (d e . f) (h i))) => ((- - -) (- - . -) (- -))