[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

multiple-value-bind



先端の XEmacs 21.5 で shimbun の記事が読めなくなりました。原因は
`multiple-value-bind' マクロの仕様が変わったためです。それを XEmacs
のバグだと思って書きはじめた記事が、以下の thread にあります:

http://news.gmane.org/group/gmane.emacs.xemacs.beta/thread=30500/force_load=t

この式

(multiple-value-bind (X Y)
    '(1 2)
  (list X Y))

は以前の XEmacs や Emacs では (1 2) を返すのですが、先端の XEmacs
21.5 では ((1 2) nil) が返ってきます。

ぼくは Common Lisp は知らないので当てずっぽうで書きますが、どう
やら multiple-value という特別な object があるようで、以前の
XEmacs や Emacs はそのまがいものを提供していたのに対し、XEmacs
21.5 だけは本来の動作になったということみたいです。

上記のような式の場合は、単なる list を multiple-value に変換する
関数 `values-list' を使わなければなりません。

(multiple-value-bind (X Y)
    (values-list '(1 2))
  (list X Y))

こうすれば先端の XEmacs 21.5 でも shimbun の記事を読めるようにな
ります。sb-cgi-board.el、sb-cnet.el、sb-multi.el で対策しました。
-- 
山岡