* format.scm (format:obj->str): Made tail-recursive. (Thanks to
authorMikael Djurfeldt <djurfeldt@nada.kth.se>
Mon, 14 Aug 2000 15:40:03 +0000 (15:40 +0000)
committerMikael Djurfeldt <djurfeldt@nada.kth.se>
Mon, 14 Aug 2000 15:40:03 +0000 (15:40 +0000)
Matthias K\81öppe.)

ice-9/format.scm

index e4c5c6f..abd13dd 100644 (file)
          (string-append "("
                         (let loop ((obj-list obj)
                                    (visited visited)
-                                   (offset 0))
+                                   (offset 0)
+                                   (prefix ""))
                           (cond ((null? (cdr obj-list))
-                                 (obj->str (car obj-list)
-                                           #t
-                                           (cons (car obj-list) visited)))
+                                 (string-append
+                                  prefix
+                                  (obj->str (car obj-list)
+                                            #t
+                                            (cons (car obj-list) visited))))
                                 ((memq (cdr obj-list) visited)
                                  (string-append
+                                  prefix
                                   (obj->str (car obj-list)
                                             #t
                                             (cons (car obj-list) visited))
                                       (list-index visited (cdr obj-list))))
                                   "#"))
                                 ((pair? (cdr obj-list))
-                                 (string-append
-                                  (obj->str (car obj-list)
-                                            #t
-                                            (cons (car obj-list) visited))
-                                  " "
-                                  (loop (cdr obj-list)
-                                        (cons (cdr obj-list) visited)
-                                        (+ 1 offset))))
+                                 (loop (cdr obj-list)
+                                       (cons (cdr obj-list) visited)
+                                       (+ 1 offset)
+                                       (string-append
+                                        prefix
+                                        (obj->str (car obj-list)
+                                                  #t
+                                                  (cons (car obj-list) visited))
+                                        " ")))
                                 (else
                                  (string-append
+                                  prefix
                                   (obj->str (car obj-list)
                                             #t
                                             (cons (car obj-list) visited))