Guile Schemeで以下のようなニュートン法のコードを実行しようとしているのですが、エラーが出て実行できません。エラーの原因が分からず、改善ができないのでどなたか改善方法が分かれば教えていただけると助かります。

(define (deriv f dx)
  ;;;導関数
  (lambda (x)(exact->inexact(/ (- (f (+ x dx)) (f x)) dx))))
(define (good-enough? g guess)
  ;;;guessが十分良い値かを確かめる。
  (< (abs (g guess)) 0.0000001))
(define (improve g guess)
  ;;;guessの値を改善する。
  (- guess (exact->inexact(/ (g guess) ((deriv g 0.0001) guess)))))
(define (newton-iter2 g guess)
  ;;;ニュートン法
  (if (good-enough? g guess)
      guess
      (newton-iter2 g (improve g guess))))
(define (square x) (* x x))
(define (sqrt-base x)
  ;;;誤差を返す関数
  (lambda (t) (- (square t) x)))

上のような関数をEmacsのスクリプト内で定義しguileに読み込ませた上で、以下のコードをguileに実行させたいのですがエラーが直せません...。
(2の平方根を求めたい。)

(define (sqrt3 x) (newton-iter2 (sqrt-base x) 1.0))
(sqrt3 2)

以下のようなエラーが出続けています...。

<unnamed port>:11:0: In procedure sqrt3:
In procedure module-lookup: Unbound variable: newton-iter2