[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7 順次実行

Special Form: begin form …

[R5RS] formを順に評価し、最後の値を返します。

Beginletのような「ブロック」を作成するわけではありません。 すなわち、一般的にはform …の先頭に「内部のdefine (internal define)」を 置くことはできません。意味的には、beginはまるでform …が beginを囲むコンテクスト中に展開されているかのように振舞います。 例えば、トップレベルに次のような式があった場合、それは2つのトップレベルのdefineと 同等です。

 
(begin (define x 1) (define y 2))

よりトリッキーな例:

 
(let ()
  (begin 
    (define x 2)
    (begin
      (define y 3)
    ))
  (+ x y))

  ≡

(let ()
  (define x 2)
  (define y 3)
  (+ x y))
Macro: begin0 exp0 exp1 …

exp0, exp1, … を評価し、exp0の結果を返します。 この名前はMzSchemeから取られました。これはCommonLispで prog1と呼ばれているものです。

beginと違って、これは「ブロック」を構成します。 begin0フォームは次のように展開されるからです。

 
(receive tmp exp0
  exp1 …
  (apply values tmp))

[ < ] [ > ]   [ << ] [ Up ] [ >> ]

This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.