CLでSRFI-7 — #:g1

Posted 2011-06-13 12:46:00 GMT

ちまちまとSRFIをCLに移植していますが、今回は、SRFI-7 フィーチャーベースの設定言語 です。
フィーチャーというのは、処理系がサポートしていて読み込める/読み込んでいる、ある機能のことのようですが、SRFI-7はそのフィーチャーの情報を元に、ライブラリを読み込んだり設定するための設定言語とのこと。
Schemeとは全く別の種類の言語、ということですが、混ぜて考えてはいけないことが何かあるのでしょう。
(program...)の中に、requires、files、code、feature-cond等が記述できて、これを組み合わせてライブラリを読み込みます。
requiresは必要とするフィーチャー、filesはロードするファイル名の指定、codeは、設定時に実行するコード、featture-condは、フィーチャーによって実行するものを切り分けるためのcondのようです。
手軽に書けるので、こういうのも悪くないかなと思ったり。
ついでなので、ASDFのSYSTEMを読み込めるように機能を追加してみました。
- srfi-7.
- (http://srfi.schemers.org/srfi-7/srfi-7.html)

動作

(program (requires :sbcl))
;=> NIL

(program (files "/tmp/foo.lisp" "/tmp/bar.lisp" "/tmp/baz.lisp")) ;=> NIL

(program (feature-cond (:sbcl))) ;=> NIL

(program (feature-cond (:sbcl (requires :srfi-1)) (:srfi-0 (requires :sbcl)))) ;=> NIL

(program (feature-cond (:allegro (systems :srfi-0 :srfi-1)) (:sbcl (systems :srfi-2))))

(program (requires :sbcl) (code (print :sbcl)) (files "/tmp/foo.lisp") (feature-cond (:x86-64))) ;-> ; :SBCL ;=> NIL


comments powered by Disqus