Subject: bug#8126: 23.2; Improvement requests for assoc.el

From: Michael Heerdegen <[email-masked]>
Date: Sat, 26 Feb 2011 20:39:37 +0100

Hello Emacs,

assoc.el, a library providing functions on association lists, is part
of GNU Emacs.

My requests:

1. Please mention this lib in the Elisp Manual.

assoc.el provides some essential elementary functions for alists.
These should be mentioned in the Elisp Manual (at least `aput',
`adelete') under "Association Lists".

2. Please remove the misleading word `sort' from the header
descriptions.

This file doesn't include any function for sorting alists.  There is
`asort', but it actually doesn't sort the alist, it only moves an
element with a given KEY to the head of the alist.

3. Most of the functions in this library use `asort' (same file) as a
helper.  `asort' uses `sort' only to put a cons cell with a given key
to the head of the alist.  This is very inefficient.  Thus, `aput',
`adelete', `aget' and `amake' have a bad run-time behavior.

Even worse, `amake' uses `aput', thus sorts the alist built so far in
recursion.

There is a package in apel called "alist.el" which provides very
similar functions.  You can use it as a reference.

4. `eval' -> `symbol-value'

All occurrences of `eval' can be replaced with `symbol-value'.

5. There are currently no autoload cookies in "assoc.el".  Maybe they
should be added.

Thanks,

Michael.

In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
 of 2010-12-11 on raven, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
configured using `configure  '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''