Scheme やり始めた者です。Gauche でやってます。
質問です。

(define (foo a b c)
 (define (bar d e f)
  (略

こんなふうに、手続きを作る define の中に、手続きを作る define って書けるじゃないですか。
で、内側の define の前に、if とか when とか書いたら、

(define (foo a b c)
 (if (null? a) (exit 1))
 (define (bar d e f)
  (略

gosh: "error": Compile Error: syntax-error: the form can appear only in the toplevel: (define (bar .....

って怒られました。
何でダメなのでしょうか。

環境:
%uname -prs
FreeBSD 7.0-RELEASE-p1 i386
%gosh -V
Gauche scheme interpreter, version 0.8.14 [utf-8,pthreads]