CLでSRFI-3 — #:g1

Posted 2011-06-06 10:18:00 GMT

はてSRFI-3なんか聞いたことないな、という方も多いかもしれませんが、SRFIには没になったものもあり、その番号は欠番となってしまいます。
SRFI-3は記念すべき一番乗りの没SRFIです。
没になったものを移植してどうするんだ、という気もしますが、移植すること自体が目的なのでとりあえず移植。
SRFI-3の内容ですが、セットとしてのリストを扱うライブラリになります。
どうやら、SRFI-1のリストライブラリに吸収合併される形となったため、単独のSRFIとしては成立しなかった模様。
- srfi-3.
- (http://srfi.schemers.org/srfi-3/srfi-3.html)

(srfi-1:lset-union #'= '(1 2 3 4) '(1 2 3 4))
;=> (1 2 3 4)

(srfi-3:lset-union #'= '(1 2 3 4) '(1 2 3 4)) ;=> (1 2 3 4)

(srfi-3:union '(1 2 3 4) '(1 2 3 4)) ;=> (1 2 3 4)

とはいえSRFI-1ともほんのり微妙に違っているところもあったりします。

移植について

大体SRFI-1の移植と同じですが今回は、もう一歩進めてオリジナルの定義の字面は一切変更しないことを目標に、マクロなどでCLとSchemeの差を埋めてみることにしました。
関数定義が結構あり、#'等をどうごまかすかということになりますが、バリューセルにも関数を詰めることで#'を書かなくても良いようにしました。
かなり強引ですが、ソースを変更しなくて良いのは気持ちが良いですね。S式みな兄弟。

comments powered by Disqus