押してみます!ベクター サイズを 2 倍にし、古いスタック要素をコピーすることにより、フル スタックにします。ただし、私のコードは現在無限ループで実行されています。私は何を間違っていますか?
(define push!
(lambda (ra-stack item)
(if (<= (vector-length (cells ra-stack))
(height ra-stack))
(begin (display "Enlarging stack...")
(enlarge-stack! ra-stack)
(push! ra-stack item))
(begin (vector-set! (cells ra-stack) (height ra-stack) item)
(set-height! ra-stack (+ (height ra-stack) 1)) ra-stack))))
(define enlarge-stack!
(lambda (ra-stack)
(let ((cells-length (vector-length (cells ra-stack))))
(make-vector (* 2 cells-length)))))
以下のコードはすべて正しく動作します。
(define set-height!
(lambda (ra-stack new-height)
(vector-set! ra-stack 0 new-height)))
(define cells
(lambda (ra-stack)
(vector-ref ra-stack 1)))
(define height
(lambda (ra-stack)
(vector-ref ra-stack 0)))
(define set-cells!
(lambda (ra-stack new-cells)
(vector-set! ra-stack 1 new-cells)))
ありがとうございました!