(define nodes-down (lambda (n node-list) (if (= n 0) node-list (nodes-down (- n 1) (node-rest node-list))))) (define top-minus (lambda (ra-stack offset) (cond ((< offset 0) ; Offset checking is same as before (error "TOP-MINUS: offset < 0" offset)) ((>= offset (height ra-stack)) (error "TOP-MINUS: offset too large for stack" offset (height ra-stack))) (else (node-element (nodes-down (+ offset 1) ra-stack)))))) ; In first implementation this was a direct vector reference