CLでSRFI-26 — #:g1

Posted 2011-05-14 09:21:00 GMT

f-underscoreのようなものもあるし、熱烈に使いたいということもなくなってきたSRFI-26ですが暇だったのでCLにまるごと移植してみました。
- srfi-26.
- (http://srfi.schemers.org/srfi-26/srfi-26.html)
使い勝手の問題ですが、LISP-1とLISP-2の表記上の違いがあり、デフォルトを (cut list ...)のようにするか、 (cut #'list ...)のようにするかで迷いましたが、#'を付けることにしました。
#'を付けないで書けた方が良いのですが、付けないとすると、

(mapcar (cut #'list 1 2 <> 3)
        '(1 2 3 4))
;=> ((1 2 1 3) (1 2 2 3) (1 2 3 3) (1 2 4 3))

(let ((list #'list*)) (mapcar (cut list 1 2 <> 3) '(1 2 3 4))) ;=> ((1 2 1 . 3) (1 2 2 . 3) (1 2 3 . 3) (1 2 4 . 3))

のような書き分けができなくなります。
まあ、こんなこともあまりしないので第一引数は、関数であると決め打ちにしてしまっても良いかなとは思います。その場合の改造も簡単にできると思います。

移植について

移植は、define-syntaxがあるのでmbeを利用。
mbeのお蔭で殆どソースコードはいじらなくても動きました。

comments powered by Disqus