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

[xyzzy:06329] Re: 初めまして and 添削願い



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

Index Home