Hatena::Groupcadr

わだばLisperになる このページをアンテナに追加 RSSフィード

2004 | 12 |
2005 | 01 | 02 | 07 | 10 | 11 |
2006 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 11 |

2011-06-13

CLでSRFI-7

| 21:46 | CLでSRFI-7 - わだばLisperになる を含むブックマーク はてなブックマーク - CLでSRFI-7 - わだばLisperになる

ちまちまとSRFIをCLに移植していますが、今回は、SRFI-7 フィーチャーベースの設定言語 です。

フィーチャーというのは、処理系がサポートしていて読み込める/読み込んでいる、ある機能のことのようですが、SRFI-7はそのフィーチャーの情報を元に、ライブラリを読み込んだり設定するための設定言語とのこと。

Schemeとは全く別の種類の言語、ということですが、混ぜて考えてはいけないことが何かあるのでしょう。

(program...)の中に、requires、files、code、feature-cond等が記述できて、これを組み合わせてライブラリを読み込みます。

requiresは必要とするフィーチャー、filesはロードするファイル名の指定、codeは、設定時に実行するコード、featture-condは、フィーチャーによって実行するものを切り分けるためのcondのようです。

手軽に書けるので、こういうのも悪くないかなと思ったり。

ついでなので、ASDFのSYSTEMを読み込めるように機能を追加してみました。

動作

(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

ゲスト



トラックバック - http://cadr.g.hatena.ne.jp/g000001/20110613