[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
srfi-0
- 機能条件式 このモジュールは SRFI-0 の cond-expand
マクロ形式を提供します。
現在、このモジュールは cond-expand
を使用したときに、自動的に
ロードされますので、明示的に (use srfi-0)
を書く必要はありません。
ポータブルなプログラムにするには、'use' 形式を使わない方が良いでしょう。
[SRFI-0] Gauche が feature-requirement をサポートしていれば、このマクロは command-or-definition … を展開します。 異るScheme の実装による機能の差異を吸収するのに使えると言えるでしょう。
feature-requiremnt は以下のような構文でなければなりません。
feature-requirement : feature-identifier | (and feature-requirement …) | (or feature-requirement …) | (not feature-requirement) |
feature-identifier は機能を示すシンボルです。ある機能が Gauche で サポートされているなら、それは、feature-requirement を満たします。 より複雑な条件を構成するために、feature-requirement のブール代数による 組み合わせを用いることが出来ます。
このマクロは feature-requirement を順にテストし、そのひとつが 満たされたら、対応する command-or-definition … に展開されます。
最後の節は、feature-requirement ではなく、else
で始めることも
できます。これ以前に満たされた条件がない場合には、このマクロは else 節の
command-or-definition に展開されます。もし、else 節がなく、
満たされる条件節がひとつもなければ、エラーが発生します。
現時点の Gauche では、サポートされている SRFI の機能は、srfi 名
(たとえば、srfi-1
)で識別されます(サポートされている SRFI に
ついては 標準への準拠 を参照してください)。
また、シンボル gauche
も feature-identifier として認識されます。
srfi-13 (文字列ライブラリ)を必要とするプログラムを書いているとしましょう。 Gauche では、標準的には、以下のようにします。
(use srfi-13) ;; ... あなたのプログラム ... |
しかし、この 'use' マクロは Gauche 専用で、他の Scheme の実装では 動作しません。代りに以下のように書くことができます。
(cond-expand (srfi-13 ;; ... あなたのプログラム ... )) |
その実装が srfi-13
をサポートしていれば、この形式は「あなたの
プログラム」に展開されます。Gauche では、この場合に
内部で(use srfi-13)
を呼び出します。
上記のフォームは実装がsrfi-13をサポートしていなければエラーとなります。 そのような実装の上でもプログラムを走らせたい時は、 代替となるライブラリ定義を提供すると良いでしょう。
(cond-expand (srfi-13 ;; ... あなたのプログラム ... ) (else (load "my-srfi-13-implementation") ;; ... あなたのプログラム ... )) |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] |
This document was generated by Shiro Kawai on November, 22 2009 using texi2html 1.78.