[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: how 'add-to-ordered-list' use
From: |
a machine of awareness |
Subject: |
Re: how 'add-to-ordered-list' use |
Date: |
Tue, 18 Oct 2011 21:08:48 +0800 |
User-agent: |
Emacs+gnus |
a machine of awareness <machine.of.awareness@gmail.com> writes:
> I read elisp manual.I use 'add-to-ordered-list',
> and don't understand.Please look example:
> (setq foo '(1 6 9 10 3 4))
> (1 6 9 10 3 4)
> (add-to-ordered-list 'foo 10)
> (6 9 1 10 3 4)
>
> Why order is changed?
> From (1 6 9 10 3 4) to (6 9 1 10 3 4)?
add-to-ordered-list source is:
(defun add-to-ordered-list (list-var element &optional order)
"..."
(let ((ordering (get list-var 'list-order)))
(unless ordering
(put list-var 'list-order
(setq ordering (make-hash-table :weakness 'key :test 'eq))))
(when order
(puthash element (and (numberp order) order) ordering))
(unless (memq element (symbol-value list-var))
(set list-var (cons element (symbol-value list-var))))
(set list-var (sort (symbol-value list-var)
(lambda (a b)
(let ((oa (gethash a ordering))
(ob (gethash b ordering)))
(if (and oa ob)
(< oa ob)
oa)))))))
I think the main part is:
(set list-var (sort (symbol-value list-var)
(lambda (a b)
(let ((oa (gethash a ordering))
(ob (gethash b ordering)))
(if (and oa ob)
(< oa ob)
oa)))))))
I single step run,result is no change.
But I don't understand.
--
a machine of awareness
DebianăEmacs+Gnus