[xyzzy:06329] Re: 初めまして and  添削願い
- Subject: [xyzzy:06329] Re: 初めまして and  添削願い
- From: KAMEI Tetsuya <kamei@xxxxxxxxxxxx>
- X-mailer: KaMail-0.0.2.4 (ITS / PDP-10s)
- X-yzzy-version: 0.2.1.186
quarto さん、こんにちは。
	2001年3月12日(月)[06:47:26]の、
	[xyzzy:06326] Re: 初めまして and 添削願い
	への返事です。
| (defun test2 (n) #'(lambda (x y)
|                     (< (nth n x) (nth n y))))
これだと、関数を返す関数になってしまいます。
| (sort *xf-table* #'(lambda (x y) (test2 4)))
従って、(sort *xf-table* (test2 4)) とかやると、期待通
り動いたりします。
| 任意の要素でソートできるようになったのですが、これをもう一歩進めて任意
| の条件、つまり "<" となっているところを "string-lessp" とか ">=" にソー
| トを行う段階で決めようとするならどこをいじったらよいでしょう。
  (sort *xf-table*
        (cond (FOO
               #'(lambda (x y) (< (nth n x) (nth n y))))
              (BAR
               #'(lambda (x y) (>= (nth n x) (nth n y))))
              (t
               #'(lambda (x y) (string-lessp (nth n x) (nth n y))))))
とか、
  (let ((ope (cond (FOO #'<)
                   (BAR #'>=)
                   (t #'string-lessp))))
    (sort *xf-table* #'(lambda (x y)
                         (funcall ope (nth n x) (nth n y)))))
とか。
-- 
亀井哲弥(Tetsuya Kamei)
kamei@xxxxxxxxxxxx