return文のようなものは比較的簡単に作れますが、念の為覚え書き。

値を返したい位置の継続を受け取って、returnするかわりにその継続に戻り値を渡します。

(use gauche.collection)

;; xsとysのすべての要素が等しければ#t, そうでなければ#f
(define (vector-equal? xs ys)
  (if (not (eq? (vector-length xs) (vector-length ys)))
      #f
      (let/cc return
        (for-each
         (^(x y)
           (if (not (equal? x y))
               (return #f)))
         xs ys)
        #t)))

実行結果

gosh> (vector-equal? #(1 2 3) #(1 2 3))
#t
gosh> (vector-equal? #(1 2 3) #(4 5 6))
#f