$20
Code the function, removeNILTop, which is passed a list and removes NIL at the top level.
Examples:
(removeNILTop '(NIL X NIL NIL Y NIL Z))
(X Y Z)
(removeNILTop '(X NIL Y NIL Z NIL))
(X Y Z)
(removeNILTop '(NIL (X NIL Y) (NIL NIL)))
((X NIL Y) (NIL NIL))
Code the function, removeNILMost, which is passed a list and removes NIL at any level. Note: if the result of removing NIL gives a NIL, it is unnecessary to remove that resulting NIL. (See the extra credit.)
Examples:
(removeNILMost '(NIL X NIL NIL Y NIL Z))
(X Y Z)
(removeNILMost '(X NIL (Y NIL Z) NIL))
(X (Y Z))
(removeNILMost '(NIL (NIL) (X NIL Y) (NIL NIL) Z))
(NIL (X Y) NIL Z)
(removeNILMost '(NIL ((((((NIL) NIL)))))))
((((((NIL))))))
Code the function, reverseTop, which is passed a list and returns a reversed list of the high-level entries. Do not use the built-in REVERSE function.
Hint: APPEND could be useful.
Examples:
(reverseTop '(X Y Z))
(Z Y X)
(reverseTop '(X (Y Z (A)) (W)))
((W) (Y Z (A)) X)
Code the function, reverseAll, which is passed a list and returns a reversed list at all levels.
Examples:
(reverseAll '(X Y Z))
(Z Y X)
(reverseAll '(X (Y Z (A)) (W)))
((W) ((A) Z Y) X)
Code the function, palindrome, which is passed a list and returns T if the list is a palindrome; otherwise, it returns NIL. It only needs to be a palindrome at the top-level.
Examples:
(palindrome '(R A C E C A R))
T
(palindrome '(W A S I T A C A R O R A C A T I S A W))
T
(palindrome '(N I X O N))
NIL
Code the function removeNILAll which also removes any resulting NIL (except the single outermost)
(removeNILAll '(NIL (NIL) (X NIL Y) (NIL NIL) Z))
((X Y) Z)
(removeNILAll '(NIL ((((((NIL) NIL)))))))
NIL
removeNILAll must work for all possible cases.
The other functions must work for all possible cases.
All your functions must be properly documented.
Your submission MUST NOT be late.
There is an extra file to run your code that includes extra credit cases named "hw6LispExtraRun.txt"