anchor.diff:  ;; 18 - HASH-TABLES
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   
  -(defun hash-table-keys (hash)
  -  "Returns a list of the keys in the hash-table."
  +(defun hash-table-keys (table)
  +  "Returns a list of the keys in the TABLE."
     (let ((result '()))
  -    (maphash (lambda (k v) (declare (ignore v)) (push k result)) hash)
  +    (maphash (lambda (k v) (declare (ignore v)) (push k result)) table)
       result))
   
   (defun hash-table-values (table)
  -  "Returns a list of the values in the hash-table."
  +  "Returns a list of the values in the TABLE."
     (let ((result '()))
       (maphash (lambda (k v) (declare (ignore k)) (push v result)) table)
       result))
   
  -(defun hash-table-entries (hash)
  -  "Returns an a-list of the entries (key . val) in the hash-table."
  +(defun hash-table-entries (table)
  +  "Returns an a-list of the entries (key . val) in the TABLE."
     (let ((result '()))
  -    (maphash (lambda (k v) (push (cons k v) result)) hash)
  +    (maphash (lambda (k v) (push (cons k v) result)) table)
       result))
   
  -(defun hash-table-path (htable &rest keys)
  +(defun hash-table-select (predicate table)
  +  "
  +RETURN: An a-list of  (k . v) from the TABLE
  +        such as (funcall PREDICATE k v) is true.
  +"
  +  (let ((result '()))
  +    (maphash (lambda (k v) (when (funcall predicate k v)
  +                             (push (cons k v) result)))
  +             table)
  +    result))
  +
  +(defun hash-table-path (table &rest keys)
     "Given a hash-table that may contain other hash-table, walks down
   the path of KEYS, returning the ultimate value"
     (if (null keys)
  -      htable
  -      (apply (function hash-table-path) (gethash (first keys) htable) (rest keys))))
  +      table
  +      (apply (function hash-table-path) (gethash (first keys) table) (rest keys))))
   
   (defun copy-hash-table (table)
     "
  
positive.code: ;;;;LEGAL
  ;;;;    AGPL3
  ;;;;    
  ;;;;    Copyright Pascal J. Bourguignon 2003 - 2015
  ;;;;    
  ;;;;    This program is free software: you can redistribute it and/or modify
  ;;;;    it under the terms of the GNU Affero General Public License as published by
  
negative.code: ;;;;AUTHORS
  ;;;;    <PJB> Pascal J. Bourguignon <pjb@informatimago.com>
  ;;;;MODIFICATIONS
  ;;;;    2016-01-04 <PJB> Added hash-table-select.
  ;;;;    2015-08-19 <PJB> Renamed INCLUDE -> INCLUDE-FILE.
  ;;;;    2015-06-13 <PJB> Added CHRONO.
  ;;;;    2014-10-22 <PJB> Added hash-table-to-sexp and sexp-to-hash-table.
  