Fix and add DOCs; fix coding style.
authortomo <tomo>
Wed, 13 Dec 2000 06:01:04 +0000 (06:01 +0000)
committertomo <tomo>
Wed, 13 Dec 2000 06:01:04 +0000 (06:01 +0000)
emacs-lisp/alist.el

index 4ac3169..4b656de 100644 (file)
@@ -1,11 +1,11 @@
-;;; alist.el --- utility functions about association-list
+;;; alist.el --- utility functions for association list
 
 ;; Copyright (C) 1993,1994,1995,1996,1998,2000 Free Software Foundation, Inc.
 
 ;; Author: MORIOKA Tomohiko <tomo@m17n.org>
 ;; Keywords: alist
 
-;; This file is part of APEL (A Portable Emacs Library).
+;; This file is part of GNU Emacs.
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License as
 ;;; Code:
 
 ;;;###autoload
-(defun put-alist (item value alist)
-  "Modify ALIST to set VALUE to ITEM.
-If there is a pair whose car is ITEM, replace its cdr by VALUE.
-If there is not such pair, create new pair (ITEM . VALUE) and
-return new alist whose car is the new pair and cdr is ALIST.
-\[tomo's ELIS like function]"
-  (let ((pair (assoc item alist)))
-    (if pair
+(defun put-alist (key value alist)
+  "Set cdr of an element (KEY . ...) in ALIST to VALUE and return ALIST.
+If there is no such element, create a new pair (KEY . VALUE) and
+return a new alist whose car is the new pair and cdr is ALIST."
+  (let ((elm (assoc key alist)))
+    (if elm
        (progn
-         (setcdr pair value)
+         (setcdr elm value)
          alist)
-      (cons (cons item value) alist)
-      )))
+      (cons (cons key value) alist))))
 
 ;;;###autoload
-(defun del-alist (item alist)
-  "If there is a pair whose key is ITEM, delete it from ALIST.
-\[tomo's ELIS emulating function]"
-  (if (equal item (car (car alist)))
+(defun del-alist (key alist)
+  "Delete an element whose car equals KEY from ALIST.
+Return the modified ALIST."
+  (if (equal key (car (car alist)))
       (cdr alist)
     (let ((pr alist)
-         (r (cdr alist))
-         )
+         (r (cdr alist)))
       (catch 'tag
        (while (not (null r))
-         (if (equal item (car (car r)))
+         (if (equal key (car (car r)))
              (progn
                (rplacd pr (cdr r))
                (throw 'tag alist)))
          (setq pr r)
-         (setq r (cdr r))
-         )
+         (setq r (cdr r)))
        alist))))
 
 ;;;###autoload
-(defun set-alist (symbol item value)
-  "Modify a alist indicated by SYMBOL to set VALUE to ITEM."
+(defun set-alist (symbol key value)
+  "Set cdr of an element (KEY . ...) in the alist bound to SYMBOL to VALUE."
   (or (boundp symbol)
-      (set symbol nil)
-      )
-  (set symbol (put-alist item value (symbol-value symbol)))
-  )
+      (set symbol nil))
+  (set symbol (put-alist key value (symbol-value symbol))))
 
 ;;;###autoload
-(defun remove-alist (symbol item)
-  "Remove ITEM from the alist indicated by SYMBOL."
+(defun remove-alist (symbol key)
+  "Delete an element whose car equals KEY from the alist bound to SYMBOL."
   (and (boundp symbol)
-       (set symbol (del-alist item (symbol-value symbol)))
-       ))
+       (set symbol (del-alist key (symbol-value symbol)))))
 
 ;;;###autoload
 (defun modify-alist (modifier default)
-  "Modify alist DEFAULT into alist MODIFIER."
+  "Store elements in the alist MODIFIER in the alist DEFAULT.
+Return the modified alist."
   (mapcar (function
           (lambda (as)
-            (setq default (put-alist (car as)(cdr as) default))
-            ))
+            (setq default (put-alist (car as)(cdr as) default))))
          modifier)
   default)
 
 ;;;###autoload
-(defun set-modified-alist (sym modifier)
-  "Modify a value of a symbol SYM into alist MODIFIER.
-The symbol SYM should be alist. If it is not bound,
-its value regard as nil."
-  (if (not (boundp sym))
-      (set sym nil)
-    )
-  (set sym (modify-alist modifier (eval sym)))
-  )
+(defun set-modified-alist (symbol modifier)
+  "Store elements in the alist MODIFIER in an alist bound to SYMBOL.
+If SYMBOL is not bound, set it to nil at first."
+  (if (not (boundp symbol))
+      (set symbol nil))
+  (set symbol (modify-alist modifier (eval symbol))))
 
 
 ;;; @ association-vector-list
@@ -102,13 +91,14 @@ its value regard as nil."
 
 ;;;###autoload
 (defun vassoc (key avlist)
-  "Search AVLIST for a vector whose first element is equal to KEY.
+  "Search AVLIST for an element whose first element equals KEY.
+AVLIST is a list of vectors.
 See also `assoc'."
-  (let (v)
-    (while (and (setq v (car avlist))
-               (not (equal key (aref v 0))))
-      (setq avlist (cdr avlist)))
-    v))
+  (while (and avlist
+             (not (equal key (aref (car avlist) 0))))
+    (setq avlist (cdr avlist)))
+  (and avlist
+       (car avlist)))
 
 
 ;;; @ end