*** series.orig/series.lsp	Sun Mar 22 14:26:48 1992
--- series.clisp/series.lsp	Sat May 30 13:09:24 1992
***************
*** 877,882 ****
--- 877,886 ----
                           (:print-function print-series))
    image-fn image-base (image-datum nil))
  
+ #+(or :CMU CLISP) ; handle multiple definition of ALTER-FN
+ (defstruct (foundation-series (:conc-name nil))
+   (alter-fn nil))
+ 
  (defmacro make-phys (&key (gen-fn nil) (alter-fn nil) (data-list T))
    `(make-basic-series :gen-fn ,gen-fn :alter-fn ,alter-fn
                        :data-so-far (cons nil ,data-list)))
***************
*** 1720,1726 ****
  ;depending on the exact syntactic form of the input.  For instance
  ;note that INCF expands into a let in some lisps and this would force
  ;the let to be in a separate expression even though it does not look
! ;like it at first glance.
  
  ;As an example of all the above consider the following.
  #|
--- 1724,1730 ----
  ;depending on the exact syntactic form of the input.  For instance
  ;note that INCF expands into a let in some lisps and this would force
  ;the let to be in a separate expression even though it does not look
! ;like it at first glance.)
  
  ;As an example of all the above consider the following.
  #|
***************
*** 2472,2478 ****
  ;  Further there is no trouble with the first frag as long as either (1) the
  ;second frag has no termination points other than the one in question (i.e.,
  ;has no series inputs without off-line-exits other than possibly the
! ;one in question and cannot by itself terminate or (2) the first frag does
  ;not have any output points other than the one in question (i.e., has no
  ;other outputs, and does not have the must-run flag set) and this output is
  ;not used anywhere other than by the input in question.  In case (1) running
--- 2476,2482 ----
  ;  Further there is no trouble with the first frag as long as either (1) the
  ;second frag has no termination points other than the one in question (i.e.,
  ;has no series inputs without off-line-exits other than possibly the
! ;one in question and cannot by itself terminate) or (2) the first frag does
  ;not have any output points other than the one in question (i.e., has no
  ;other outputs, and does not have the must-run flag set) and this output is
  ;not used anywhere other than by the input in question.  In case (1) running
***************
*** 4365,4370 ****
--- 4369,4375 ----
  
  (defS scan-hash (table)
      "Creates two series containing the keys and values in a hash table."
+   #-CLISP
    (fragL ((table)) ((keys T) (values T)) ((keys T) (values T) (lst list)) ()
           ((setq lst nil)
            (maphash #'(lambda (key val) (push (cons key val) lst)) table))
***************
*** 4372,4378 ****
            (setq keys (caar lst))
            (setq values (cdar lst))
            (setq lst (cdr lst))) () ())
! #+symbolics :optimizer #+symbolics
    (funcall-literal-frag
      `((((table)) ((keys T) (values T)) ((state T) (keys T) (values T)) ()
         ((setq state nil))
--- 4377,4392 ----
            (setq keys (caar lst))
            (setq values (cdar lst))
            (setq lst (cdr lst))) () ())
!   #+CLISP
!   (fragL ((table)) ((keys T) (values T)) ((state T) (nextp T) (keys T) (values T)) ()
!          ((setq state (sys::hash-table-iterator table)))
!          ((multiple-value-setq (nextp keys values) (sys::hash-table-iterate state))
!           (unless nextp (go END))
!          )
!          ()
!          ()
!   )
!   #+symbolics :optimizer #+symbolics
    (funcall-literal-frag
      `((((table)) ((keys T) (values T)) ((state T) (keys T) (values T)) ()
         ((setq state nil))