(rontolisp) docs
← 構文

cond-expand

(cond-expand (requirement body...)... [(else body...)])

要件が成り立つ最初の節を、なければ else 節を選び、その本体を begin と同じように置きます: トップレベルと本体ではその定義はそこでの定義に、先頭の import の並びではその import はプログラムの import に、式の中では最後の形式の値になります。define-library の宣言としては、本体はさらに宣言の並びです。要件は次のいずれかです:

  • 機能識別子。features が返すもののいずれか;
  • (library name)。(import name) がライブラリを見つけられるとき成り立ちます: このフロントエンドにある標準ライブラリ、それより前の define-library、またはライブラリファイル;
  • (and requirement...)、(or requirement...)、(not requirement)。

節はプログラムを読む時点で選ばれるので、コンパイルしたプログラムには選ばれた本体だけが入ります。どの節も成り立たず else もない cond-expand はエラーです。R7RS では未規定です。

2/3