library declaration

プログラミング言語 Scheme についてぼんやりと仕様 (R7RS) を眺めていてふと思ったことがある。

define-library を解釈する時点ではライブラリは読み込まれていないのでこれは通常の構文よりもメタな存在だと考えられる。 define-library 以下の <library declaration> 部に現れることができるとされている begin 等の宣言も同様にメタな存在 (普通の構文としての解釈は行われない) だと考えていいのだろうか?

具体的に言えば以下のような書き方をしてもエラーではないのだろうか?

(define-library (foo)
  (export foo)
  (import (except (scheme base) begin))

  (begin
    (define foo 'foo)))

GaucheSagittarius で試してみると通ることが確認できるが foment ではエラーになる。

仕様の 5.6.1 では

The begin, include, and include-ci declarations are used to specify the body of the library. They have the same syntax and semantics as the corresponding expression types.

とあるのだが define-library の性質を考えると same syntax というのが字句的にマッチするという意味にもそうでないようにも思える。 あるいは未定義だと考えるべきなのだろうか。