(define nodes-down
(lambda (n node-list)
(if (= n 0)
node-list
(nodes-down (- n 1) (node-rest node-list)))))
A: No, because nodes-down hides details of
the representation of a node (it only calls itself and node-rest).
Moral of the Story:
If you hide as much implementation detail as possible when coding ADT operations, changing the ADT representation is much easier.