特定のSRFIが使えるかどうかをcond-expand
で検査する場合は、機能要請式
(library
が使えます (機能条件式参照)。
library-nameにはGauche方式のモジュール名もR7RS方式のライブラリ名も使えます。
library-name
)
;; Use 'library' feature requirement with Gauche module name (cond-expand [(library srfi.13) (use srfi.13) ...] [else ...]) ;; Use 'library' feature requirement with R7RS library name (cond-expand [(library (srfi 13)) (import (srfi 13)) ...] [else ...])
他に、SRFI名を直接機能識別子として使うこともできます。
ただし、この機能は非推奨です。これはR7RS以前の方式です。
この指定を使った場合、機能条件が満たされたならば、必要なモジュールは自動的にインポート
されているので、use
やimport
でインポートする必要はありません。
ただそれは、only
、rename
、prefix
節などでインポートする
識別子を制御できないということでもあります。
;; DEPRECATED. Use 'srfi-N' feature identifier. ;; If the feature is fulfilled, you can assume the module is already 'use'd. (cond-expand [srfi-13 ...] [else ...])
srfi-N
が機能識別子として使われた場合、
環境変数GAUCHE_WARN_SRFI_FEATURE_ID
がセットされていれば
警告が表示されます。将来はデフォルトで警告するようになります。
srfi-N
機能識別子を使っているユーザは、なるべく早く
(library srfi.N)
へと書き換えるようにしてください。