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

[xyzzy:07537] stable-sort について



亀井さん、メーリングリストの皆さん、こんにちは。
大久保と申します。久しぶりにメールさせてもらいます。

xyzzy 0.2.2.210 にて lisp モードのキーワードリストを自分で
更新しようと思い、とりあえず、fboundp、boundp、macro-function 等での
判定を行わずに lisp package の全ての外部シンボルを得ようと、
次のコードを評価しました。

(let (symbols)
  (do-external-symbols (s (find-package 'lisp))
    (push (format nil "~A" (symbol-name s)) symbols))
  (stable-sort symbols #'string-lessp)
  (dolist (s symbols)
    (format t "~A\n" s)))

その結果、

simple-string
simple-string-p
simple-vector
...
yes-no-or-cancel-p
yes-or-no-p
zerop

と、simple-string 以降のシンボルのみ出力されました。
試しに sort するのをやめ、以下のコードを評価してみました。

(let (symbols)
  (do-external-symbols (s (find-package 'lisp))
    (push (format nil "~A" (symbol-name s)) symbols))
;  (stable-sort symbols #'string-lessp)
  (dolist (s symbols)
    (format t "~A\n" s)))

その結果、

simple-string
make-symbol
nth
...
round
simple-string-p
sharing-violation-pathname

と、simple-string を先頭とし、恐らく全ての外部シンボルが出力されました。
(eq #'stable-sort #'sort) が t なので当前ですが、stable-sort を sort に
変更しても出力結果はかわりませんでした。

lisp にあまり明るくないため、私が stable-sort の使い方を間違えているのか、
stable-sort の挙動がおかしいのか、sort する際に領域を拡大するような指定が
存在するのかわからない状態です。

以上ご教授宜しくお願い致します。

---
大久保博之(OHKUBO Hiroshi)
konata_o@xxxxxxxxxxx
http://members.tripod.co.jp/ohkubo/xyzzy/index.html

Index Home