help-gnu-emacs
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]