(define height
(lambda (ra-stack)
(vector-ref ra-stack 0)))
(define empty-ra-stack?
(lambda (ra-stack)
(= 0 (height ra-stack))))
We could have defined empty-ra-stack? as:
(define empty-ra-stack? ; second version
(lambda (ra-stack)
(= 0 (vector-ref ra-stack 0))))
Q: Why is the first version better?
A: It doesn't expose the implementation choice (vectors).
Data abstraction again: Hide to the extent possible the details of the implementation.