Eliminate use of list-head and list-tail.
authorChris Hanson <org/chris-hanson/cph>
Thu, 5 Dec 2019 00:21:06 +0000 (16:21 -0800)
committerChris Hanson <org/chris-hanson/cph>
Mon, 9 Dec 2019 09:49:29 +0000 (01:49 -0800)
Also make reverse* an alias for append-reverse.

41 files changed:
src/compiler/base/sets.scm
src/compiler/fgopt/order.scm
src/compiler/fgopt/reuse.scm
src/compiler/fgopt/simapp.scm
src/compiler/machines/svm/assembler-compiler.scm
src/compiler/machines/x86-64/insmac.scm
src/compiler/rtlbase/rtlcon.scm
src/edwin/artdebug.scm
src/edwin/debug.scm
src/edwin/dired.scm
src/edwin/keymap.scm
src/edwin/kilcom.scm
src/edwin/nntp.scm
src/edwin/prompt.scm
src/edwin/rfc822.scm
src/edwin/shell.scm
src/edwin/snr.scm
src/etc/ucd-converter.scm
src/imail/imail-imap.scm
src/runtime/advice.scm
src/runtime/dbgutl.scm
src/runtime/debug.scm
src/runtime/defstr.scm
src/runtime/gcstat.scm
src/runtime/infutl.scm
src/runtime/list.scm
src/runtime/load.scm
src/runtime/mit-macros.scm
src/runtime/output-port.scm
src/runtime/pp.scm
src/runtime/record.scm
src/runtime/rep.scm
src/runtime/runtime.pkg
src/runtime/scan.scm
src/runtime/srfi-1.scm
src/runtime/string.scm
src/runtime/unix-pathname.scm
src/sf/reduct.scm
src/sos/generic.scm
tests/runtime/test-floenv.scm
tests/runtime/test-string.scm

index 236648c75c132fad7ba04275e1c666b8e82aba1e..41e3fed8ce1d5723789168d00605def3829a153f 100644 (file)
@@ -74,7 +74,7 @@ USA.
   (loop set))
 \f
 ;;; The dataflow analyzer assumes that
-;;; (eq? (list-tail (eq-set-union x y) n) y) for some n.
+;;; (eq? (drop (eq-set-union x y) n) y) for some n.
 
 (define (eq-set-union x y)
   (if (null? y)
index 8e3c7bb4ba2cd2c622fb8f91e9a7ff741fa5d0ca..d4d1051adbf7d11757c31811241702f2b88bec64 100644 (file)
@@ -263,7 +263,7 @@ USA.
                 parameters
                 (let ((n-parameters (length parameters)))
                   (if (> (length arguments) n-parameters)
-                      (list-head arguments n-parameters)
+                      (take arguments n-parameters)
                       arguments)))))
        '())))
 \f
index a99ce8c9c4318316a7af18cb2605dd626ff4e993..095a43649c25a3dedf8841efb29bdf20afea7072 100644 (file)
@@ -132,8 +132,8 @@ USA.
                                                        overwritten-block)
                             subproblems))))))
              (if (< n-targets n-subproblems)
-                 (values (make-nodes (list-head subproblems n-targets))
-                         (list-tail subproblems n-targets))
+                 (values (make-nodes (take subproblems n-targets))
+                         (drop subproblems n-targets))
                  (values (make-nodes subproblems) '()))))))
     (lambda (nodes extra-subproblems)
       (call-with-values
@@ -157,7 +157,7 @@ USA.
               (append! (block-layout block) (loop (block-parent block)))))))
     (let ((n-items (length stack-layout)))
       (if (< overwriting-size n-items)
-         (list-tail stack-layout (- n-items overwriting-size))
+         (drop stack-layout (- n-items overwriting-size))
          stack-layout))))
 
 (define (block-layout block)
index a0c23eaf80997b4ac2033aedad41b3105affab39..661cb8daf6f95aeb375656827f41201102f006aa 100644 (file)
@@ -68,7 +68,7 @@ USA.
     (let ((new (lvalue-values-cache (reference-lvalue operator))))
       (let loop ((operators new))
        ;; We can use `eq?' here because we assume that
-       ;; (eq? (list-tail (eq-set-union x y) n) y) for some n.
+       ;; (eq? (drop (eq-set-union x y) n) y) for some n.
        ;; This is also noted at the definition of `eq-set-union'.
        (if (eq? operators old)
            new
index 6c49e4a913f252a3f4109f72de39357eaff697bf..39224c90f1e35649826202dd821cc8331de5f56f 100644 (file)
@@ -604,7 +604,7 @@ USA.
                  (car names)
                  (cdr names)))))
       (for-each (lambda (defn name)
-                 (set-defn-name! defn (cons (car name) (list-tail name n))))
+                 (set-defn-name! defn (cons (car name) (drop name n))))
                defns
                names))))
 
index 7f835bc7435b606eab9cdb3a0937d2568d836fd5..1de4fefac12ec0ff8bcc79f923d8aa2418ec02ba 100644 (file)
@@ -60,7 +60,7 @@ USA.
                  (rex (list-ref actions 1))
                  (mode (list-ref actions 2))
                  (r/m (list-ref actions 3))
-                 (extra (list-tail actions 4)))
+                 (extra (drop actions 4)))
              `(,(close-syntax 'MAKE-EFFECTIVE-ADDRESS environment)
                (,(close-syntax 'QUOTE environment) ,keyword)
                ,(parse-categories categories environment pattern)
index 0f830f3f84aec858e36b54f5150bbeec8544dab0..6352153543a016e5257a7255ee10a9f39575c11c 100644 (file)
@@ -583,9 +583,9 @@ USA.
              (do-chunk elements
                        offset
                        (finish))
-             (do-chunk (list-head elements chunk-size)
+             (do-chunk (take elements chunk-size)
                        offset
-                       (process (list-tail elements chunk-size)
+                       (process (drop elements chunk-size)
                                 (+ offset chunk-size)
                                 (1+ chunk)))))))))
 \f
index fe5eb4649d7c61adeded4373b07c2785b1d165ed..4dcaab45fd3f88bbf095de44dcce34b664202481 100644 (file)
@@ -1241,8 +1241,8 @@ Prefix argument means do not kill the debugger buffer."
        (delta (- subproblem-number (dstate/subproblem-number dstate))))
     (if (negative? delta)
        (let ((subproblems
-              (list-tail (dstate/previous-subproblems dstate)
-                         (-1+ (- delta)))))
+              (drop (dstate/previous-subproblems dstate)
+                    (-1+ (- delta)))))
          (set-current-subproblem! dstate (car subproblems) (cdr subproblems))
          (finish-move-to-subproblem! dstate))
        (let loop
index 76c1ff1dd7556340f18f3336bbe861108e398a73..507c7fc055bf7199e86c9054238fd69d51d58734 100644 (file)
@@ -1554,7 +1554,7 @@ once it has been renamed, it will not be deleted automatically.")
                                (write-string " bindings (first " port)
                                (write limit port)
                                (write-string " shown):" port)
-                               (finish (list-head names limit))
+                               (finish (take names limit))
                                #t)))))))
          (else
           (write-string "  BINDINGS:" port)
index 52031a648347d9b201f270211c3dc2e749aad024..922acc1ed6a2f6ae03eef9f593249058afadb6b9 100644 (file)
@@ -391,7 +391,7 @@ negative numeric arg overrides kept-old-versions with minus the arg."
                        (let ()
                          (let ((end (- nv total)))
                            (do ((versions
-                                 (list-tail
+                                 (drop
                                   (sort (cdr file)
                                         (lambda (x y)
                                           (< (car x) (car y))))
index f3a588a96f8bdcc1a9c8f16eee78a428d35fbbed..774a6a16c24b79722a491d9c6d9f6dd761dde048 100644 (file)
@@ -127,7 +127,7 @@ Previous contents of that buffer are killed first."
                  (loop (cddr elements)))))))))
 
 (define (reorder-list items)
-  (let ((tail (list-tail items (integer-ceiling (length items) 2))))
+  (let ((tail (drop items (integer-ceiling (length items) 2))))
     (let loop ((items items) (items* tail))
       (cond ((eq? items tail) '())
            ((null? items*) (list (car items)))
index 30f5475629f6c5cf4719d344729054e5b519206a..e64d38b9ee680cb317c2ca79ba4966f137538907 100644 (file)
@@ -231,7 +231,7 @@ The command \\[yank] can retrieve it from there.
               '()
               (let ((strings (cons string kill-ring)))
                 (if (> (length strings) kill-ring-max)
-                    (set-cdr! (list-tail strings (- kill-ring-max 1)) '()))
+                    (set-cdr! (drop strings (- kill-ring-max 1)) '()))
                 strings)))))
     (set-variable! kill-ring strings context)
     (set-variable! kill-ring-yank-pointer strings context)))
@@ -320,15 +320,15 @@ comes the newest one."
          (editor-error "Kill ring is empty"))
       (set-variable!
        kill-ring-yank-pointer
-       (list-tail kill-ring
-                 (modulo (+ argument
-                            (let ((kill-ring-yank-pointer
-                                   (ref-variable kill-ring-yank-pointer)))
-                              (let loop ((l kill-ring) (n 0))
-                                (cond ((null? l) 0)
-                                      ((eq? l kill-ring-yank-pointer) n)
-                                      (else (loop (cdr l) (+ n 1)))))))
-                         (length kill-ring)))))))
+       (drop kill-ring
+            (modulo (+ argument
+                       (let ((kill-ring-yank-pointer
+                              (ref-variable kill-ring-yank-pointer)))
+                         (let loop ((l kill-ring) (n 0))
+                           (cond ((null? l) 0)
+                                 ((eq? l kill-ring-yank-pointer) n)
+                                 (else (loop (cdr l) (+ n 1)))))))
+                    (length kill-ring)))))))
 \f
 ;;;; Marks
 
index 44621943ec451f63cd26faf3eb17f1bb96f12095..fdb81adcb43c30a08bea2a6b82cda2dbefb73691 100644 (file)
@@ -1004,7 +1004,7 @@ USA.
                      (message msg "done")
                      (reverse! replies))
                    (let* ((rxd (min rxn n-chunk))
-                          (rxlist* (list-tail rxlist rxd))
+                          (rxlist* (drop rxlist rxd))
                           (replies (receive-replies rxlist rxlist* replies))
                           (txd (min txn n-chunk)))
                      (loop (- txn txd)
index 8035ccc8e0e435161283bfdedb3cbbf78ca5887c..c0c31ed2f6ffcd8b2741455d4f6b85a93fe5816c 100644 (file)
@@ -951,7 +951,7 @@ With argument, skips forward that many items in the history."
                  (cond ((< index 0) 0)
                        ((>= index hl) (- hl 1))
                        (else index)))))
-         (set-car! (list-tail *history-items* *history-index*)
+         (set-car! (drop *history-items* *history-index*)
                    (typein-string))
          (set! *history-index* index)
          (set-typein-string! (list-ref *history-items* *history-index*) #t)
index 459690eddd1f3fca3c10beec4b5c533d81ff8e3f..67e132e7ed445ebc8cd93dbfc9ba8b19e402b065 100644 (file)
@@ -558,7 +558,7 @@ USA.
 (define (reverse-list->string list start end)
   (let* ((length (fix:- end start))
          (string (make-string length)))
-    (let loop ((list (list-tail list start))
+    (let loop ((list (drop list start))
                (index length))
       (cond ((fix:zero? index)
              string)
index 0f3aec06a7336731b9637515ef6c0a21b0799b9b..0cc9e6feed7ceb5b25b371482336b4ffcdbcfd05 100644 (file)
@@ -204,9 +204,8 @@ Otherwise, one argument `-i' is passed to the shell."
                  (message "Directory stack not that deep")
                  (let ((dirstack
                         (let ((dirstack (cons default-directory dirstack)))
-                          (append (list-tail dirstack num)
-                                  (list-head dirstack
-                                             (- (length dirstack) num))))))
+                          (append (drop dirstack num)
+                                  (take dirstack (- (length dirstack) num))))))
                    (set-variable! shell-dirstack (cdr dirstack))
                    (shell-process-cd (car dirstack))))
              (begin
@@ -230,7 +229,7 @@ Otherwise, one argument `-i' is passed to the shell."
          (else
           (if (= num 1)
               (set-variable! shell-dirstack (cdr dirstack))
-              (let ((pair (list-tail dirstack (- num 1))))
+              (let ((pair (drop dirstack (- num 1))))
                 (set-cdr! pair (cddr pair))))
           (shell-dirstack-message)))))
 
index d7b0235cd61f6d75d448a928581aac3df9ebdd99..39725a8383e07da81cfc6bf4549982013fb8f8dc 100644 (file)
@@ -4200,8 +4200,8 @@ With prefix arg, replaces the file with the list information."
          (if limit
              (let ((lns (length ns)))
                (cond ((<= lns (abs limit)) ns)
-                     ((< limit 0) (list-head ns (- limit)))
-                     (else (list-tail ns (- (length ns) limit)))))
+                     ((< limit 0) (take ns (- limit)))
+                     (else (drop ns (- (length ns) limit)))))
              ns)))
    (let ((ignore-header?
           (let ((filter (ref-variable news-header-filter context)))
index 449b1fb230cda68eae647fe90af49d32743b6187..bd0189149f7cec13dc43c461f946beb4e98cb144 100644 (file)
@@ -1075,8 +1075,8 @@ USA.
         (let loop ((values values) (n (length values)))
           (if (<= n 100)
               (list `(,make-table ,@values))
-              (cons `(,make-table ,@(list-head values 100))
-                    (loop (list-tail values 100)
+              (cons `(,make-table ,@(take values 100))
+                    (loop (drop values 100)
                           (- n 100)))))))
     (if (= 1 (length tables))
        (car tables)
@@ -1142,8 +1142,8 @@ USA.
   (let loop ((items items))
     (lambda ()
       (if (pair? items)
-         (cons (list-head items step)
-               (loop (list-tail items step)))
+         (cons (take items step)
+               (loop (drop items step)))
          '()))))
 
 (define (slice-prop-alist alist step)
index 5aafa5385181b1723b7b168ad2173f9dee731631..86e0da6cd0ea60b159d4b3d8394d6f7c39283558 100644 (file)
@@ -1615,7 +1615,7 @@ USA.
                  (intern (list-ref body 5))
                  (list-ref body 6)
                  (list-ref body 7)
-                 (parse-mime-body:extensions (list-tail body 8))))
+                 (parse-mime-body:extensions (drop body 8))))
          ((and (string-ci=? "message" (car body))
                (string-ci=? "rfc822" (cadr body)))
           (if (not (fix:>= n 10))
@@ -1632,7 +1632,7 @@ USA.
                          (parse-mime-envelope (list-ref body 7))
                          enclosed
                          (list-ref body 9)
-                         (parse-mime-body:extensions (list-tail body 10)))))
+                         (parse-mime-body:extensions (drop body 10)))))
             (set-mime-body-enclosure! enclosed enclosure)
             enclosure))
          (else
@@ -1646,7 +1646,7 @@ USA.
                  (list-ref body 4)
                  (intern (list-ref body 5))
                  (list-ref body 6)
-                 (parse-mime-body:extensions (list-tail body 7)))))))
+                 (parse-mime-body:extensions (drop body 7)))))))
 \f
 (define (parse-mime-body:extensions tail)
   (if (pair? tail)
index f790d6c5ff02eb1c78a10614835b5cd64dd08d88..e9dbfd0bb6e5c5c63bd3b64ee7883c508b157f15 100644 (file)
@@ -287,7 +287,7 @@ USA.
                  (write-args arguments)
                  (write-string "]" port))
                (begin
-                 (write-args (list-head arguments 10))
+                 (write-args (take arguments 10))
                  (newline port)
                  (write-string "          ...]" port))))))
     (newline port)))
index 3677cb15ded8a41d84983636da6ff119e08b24a4..12d1ec503d1abc76b988ac9dec699997e7d3d361 100644 (file)
@@ -153,7 +153,7 @@ USA.
             (write brief-bindings-limit port)
             (write-string " shown):" port)
             (newline port)
-            (finish (list-head bindings brief-bindings-limit)))
+            (finish (take bindings brief-bindings-limit)))
            (else
             (write-string " has bindings:" port)
             (newline port)
index 8e3b773ce7579f61105b29abd1e756b800baa1e6..4e74780a14eb456ea7aaf3be0aca98584821689b 100644 (file)
@@ -537,7 +537,7 @@ USA.
           (- (prompt-for-nonnegative-integer "Subproblem number" false port)
              (dstate/subproblem-number dstate))))
       (if (negative? delta)
-         (list-tail (dstate/previous-subproblems dstate) (-1+ (- delta)))
+         (drop (dstate/previous-subproblems dstate) (-1+ (- delta)))
          (let loop
              ((subproblem (dstate/subproblem dstate))
               (subproblems (dstate/previous-subproblems dstate))
index ff61806a179715ce49efeb2b42a22a2a55736456..706560a710f5134caeeea584a280a0779eebfacf 100644 (file)
@@ -654,8 +654,8 @@ differences:
                                                           value))
                       ((list)
                        `(,(absolute 'set-car! context)
-                         (,(absolute 'list-tail context) structure
-                                                         ,(slot/index slot))
+                         (,(absolute 'drop context) structure
+                                                    ,(slot/index slot))
                          value)))))))
         (remove slot/read-only? (structure/slots structure)))))
 \f
index 403c897e686e7b585b36c4f63f13f1e10ed4b732..f942b2d085b36bf34dc51ba0f86600e7f38f9458 100644 (file)
@@ -187,8 +187,8 @@ USA.
 (define (copy-to-size l size)
   (let ((max (length l)))
     (if (>= max size)
-       (list-head l size)
-       (append (list-head l max)
+       (take l size)
+       (append (take l max)
                (make-list (- size max) '())))))
 
 (define (bounded:install-history!)
index 65f2a425cd0f1c64bdf751cb1b8a1c3d4d7f64ed..0a269081a181cdf3ab70629c15c9acac822ae83d 100644 (file)
@@ -249,8 +249,8 @@ USA.
          (pathname-new-directory
           (file-pathname pathname)
           (cons 'relative
-                (list-tail (pathname-directory pathname)
-                           (length (pathname-directory (car rule))))))
+                (drop (pathname-directory pathname)
+                      (length (pathname-directory (car rule))))))
          (cdr rule))
         pathname))))
 
index 9e873f274c16250c1fc32684b17fd1a84b6640d7..a1a8e7678f3b47ffbbb9479943118e87ff7e9c22 100644 (file)
@@ -321,39 +321,13 @@ USA.
       #t))
 \f
 (define (list-ref list index)
-  (let ((tail (list-tail list index)))
-    (if (not (pair? tail))
-       (error:bad-range-argument index 'list-ref))
-    (car tail)))
+  (car (drop list index)))
 
 (define (list-set! list index new-value)
-  (let ((tail (list-tail list index)))
-    (if (not (pair? tail))
-       (error:bad-range-argument index 'list-set!))
-    (set-car! tail new-value)))
-
-(define (list-tail list index)
-  (guarantee index-fixnum? index 'list-tail)
-  (let loop ((list list) (index* index))
-    (if (fix:zero? index*)
-       list
-       (begin
-         (if (not (pair? list))
-             (error:bad-range-argument index 'list-tail))
-         (loop (cdr list) (fix:- index* 1))))))
-
-(define (list-head list index)
-  (guarantee index-fixnum? index 'list-head)
-  (let loop ((list list) (index* index))
-    (if (fix:zero? index*)
-       '()
-       (begin
-         (if (not (pair? list))
-             (error:bad-range-argument index 'list-head))
-         (cons (car list) (loop (cdr list) (fix:- index* 1)))))))
+  (set-car! (drop list index) new-value))
 
 (define (sublist list start end)
-  (list-head (list-tail list start) (- end start)))
+  (take (drop list start) (- end start)))
 
 (define (list-copy items)
   (let ((lose (lambda () (error:not-a list? items 'list-copy))))
@@ -573,7 +547,7 @@ USA.
    (lambda () '())
    (lambda (l) l)
    %append-2))
-\f
+
 (define (%append-2! l1 l2)
   (if (pair? l1)
       (begin (set-cdr! (last-pair l1) l2)
@@ -597,29 +571,6 @@ USA.
    (lambda () '())
    (lambda (l) l)
    %append-2!))
-
-(define (reverse l) (reverse* l '()))
-(define (reverse! l) (reverse*! l '()))
-
-(define (reverse* l tail)
-  (let loop ((rest l) (so-far tail))
-    (if (pair? rest)
-       (loop (cdr rest) (cons (car rest) so-far))
-       (begin
-         (if (not (null? rest))
-             (error:not-a list? l 'reverse*))
-         so-far))))
-
-(define (reverse*! l tail)
-  (let loop ((current l) (new-cdr tail))
-    (if (pair? current)
-       (let ((next (cdr current)))
-         (set-cdr! current new-cdr)
-         (loop next current))
-       (begin
-         (if (not (null? current))
-             (error:not-a list? l 'reverse*!))
-         new-cdr))))
 \f
 ;;;; Mapping Procedures
 
index b4be85cc4785762063607db0d3b03757d4eb46b3..8a246f0b416e20c3487ebe8170b2d18efeb371b8 100644 (file)
@@ -437,7 +437,7 @@ USA.
 (define (standard-uri->pathname uri)
   (or (uri->pathname uri #f)
       (merge-pathnames
-       (uri->pathname (make-uri #f #f (list-tail (uri-path uri) 4) #f #f))
+       (uri->pathname (make-uri #f #f (drop (uri-path uri) 4) #f #f))
        (standard-library-directory-pathname))))
 
 (define (system-uri #!optional rel-uri)
index 3082ae9cfdf4527eb7520babfb22734353521529..8b455b1e7134158f58aec4ef407540720658f4e9 100644 (file)
@@ -594,15 +594,15 @@ USA.
 
        (define (choose i)
          (let ((choice (assv i choices))
-               (args* (list-head args i)))
+               (args* (take args i)))
            (if choice
                (apply scons-call (cdr choice) args*)
                (scons-call 'error "No matching case-lambda clause:"
                            (apply scons-call 'list args*)))))
 
-       (scons-lambda (append (list-head args low)
+       (scons-lambda (append (take args low)
                              (list #!optional)
-                             (list-tail args low))
+                             (drop args low))
          (let loop ((i low))
            (if (fix:< i high)
                (scons-if (scons-call 'default-object? (list-ref args i))
index 6c9d4c0b881429e4ba3ce276c92bf269cea40f8e..71bc891a2a98344ba38878a1fb6baf6351978add 100644 (file)
@@ -231,9 +231,9 @@ USA.
                    (n-strings (length strings))
                    (cols '()))
                 (if (> n-strings n-rows)
-                    (loop (list-tail strings n-rows)
+                    (loop (drop strings n-rows)
                           (- n-strings n-rows)
-                          (cons (list-head strings n-rows) cols))
+                          (cons (take strings n-rows) cols))
                     (reverse!
                      (if (> n-strings 0) (cons strings cols) cols)))))
             (lambda ()
index 3358094f17c3ddd07edfb744c12022d095c20884..807f6150a40919754577e20141f98c34662adde5 100644 (file)
@@ -504,7 +504,7 @@ USA.
          (and (>= available-space (+ (-1+ n-cols) (reduce + 0 widths)))
               (let ((last-n-1 (remainder (-1+ n-nodes) n-cols)))
                 (>= available-space
-                    (+ (+ last-n-1 (reduce + 0 (list-head widths last-n-1)))
+                    (+ (+ last-n-1 (reduce + 0 (take widths last-n-1)))
                        (+ last-size depth))))))
 
        (define (find-max-width posn step)
index bd403538335bcc3004187d71b95a7eaa3bb78fcc..0de2d8af4c990b34437591b89061ddf47497601f 100644 (file)
@@ -905,10 +905,10 @@ USA.
     (if (structure-type/tag type)
        (lambda (structure value)
          (check-list-tagged structure type)
-         (set-car! (list-tail structure index) value))
+         (set-car! (drop structure index) value))
        (lambda (structure value)
          (check-list-untagged structure type)
-         (set-car! (list-tail structure index) value)))))
+         (set-car! (drop structure index) value)))))
 
 (define-integrable (check-vector-tagged structure type)
   (if (not (and (vector? structure)
index da9b09f5b527310c5f20617c7b75ba551aca6b9c..9364e399c62cfab5250622c0030ea5abbe253f7c 100644 (file)
@@ -771,7 +771,7 @@ USA.
 (define (repl-history/replace-current! history object)
   (let ((elements (repl-history/elements history)))
     (if (pair? elements)
-       (set-car! (list-tail elements (- (repl-history/size history) 1))
+       (set-car! (drop elements (- (repl-history/size history) 1))
                  object))))
 
 (define (repl-history/read history n)
index 3b20ee38f6a4796f85adc1593b9ea2ce1deae596..7108745c91fdc4034888111fd42bc66de0b5fe75 100644 (file)
@@ -3175,7 +3175,6 @@ USA.
          fold-left
          keep-matching-items
          keep-matching-items!
-         list-head
          map*
          reduce-left)
   (export ()
@@ -3190,48 +3189,48 @@ USA.
          alist-delete!                 ;SRFI-1
          alist?
          any-duplicates?
-         append
+         append                        ;SRFI-1
          append!                       ;SRFI-1
          append-map                    ;SRFI-1
          append-map!                   ;SRFI-1
-         assoc
+         assoc                         ;SRFI-1
          association-procedure
-         assq
-         assv
-         caaaar
-         caaadr
-         caaar
-         caadar
-         caaddr
-         caadr
-         caar
-         cadaar
-         cadadr
-         cadar
-         caddar
-         cadddr
-         caddr
-         cadr
-         car
+         assq                          ;SRFI-1
+         assv                          ;SRFI-1
+         caaaar                        ;SRFI-1
+         caaadr                        ;SRFI-1
+         caaar                         ;SRFI-1
+         caadar                        ;SRFI-1
+         caaddr                        ;SRFI-1
+         caadr                         ;SRFI-1
+         caar                          ;SRFI-1
+         cadaar                        ;SRFI-1
+         cadadr                        ;SRFI-1
+         cadar                         ;SRFI-1
+         caddar                        ;SRFI-1
+         cadddr                        ;SRFI-1
+         caddr                         ;SRFI-1
+         cadr                          ;SRFI-1
+         car                           ;SRFI-1
          car+cdr                       ;SRFI-1
-         cdaaar
-         cdaadr
-         cdaar
-         cdadar
-         cdaddr
-         cdadr
-         cdar
-         cddaar
-         cddadr
-         cddar
-         cdddar
-         cddddr
-         cdddr
-         cddr
-         cdr
+         cdaaar                        ;SRFI-1
+         cdaadr                        ;SRFI-1
+         cdaar                         ;SRFI-1
+         cdadar                        ;SRFI-1
+         cdaddr                        ;SRFI-1
+         cdadr                         ;SRFI-1
+         cdar                          ;SRFI-1
+         cddaar                        ;SRFI-1
+         cddadr                        ;SRFI-1
+         cddar                         ;SRFI-1
+         cdddar                        ;SRFI-1
+         cddddr                        ;SRFI-1
+         cdddr                         ;SRFI-1
+         cddr                          ;SRFI-1
+         cdr                           ;SRFI-1
          circular-list                 ;SRFI-1
          circular-list?                ;SRFI-1
-         cons
+         cons                          ;SRFI-1
          cons*                         ;SRFI-1
          decode-general-car-cdr
          del-assoc
@@ -3249,17 +3248,17 @@ USA.
          delv
          delv!
          dotted-list?                  ;SRFI-1
-         eighth
+         eighth                        ;SRFI-1
          encode-general-car-cdr
          error:not-restricted-keyword-list
          except-last-pair
          except-last-pair!
-         fifth
-         first
+         fifth                         ;SRFI-1
+         first                         ;SRFI-1
          fold                          ;SRFI-1
          fold-right                    ;SRFI-1
-         for-each
-         fourth
+         for-each                      ;SRFI-1
+         fourth                        ;SRFI-1
          general-car-cdr
          get-keyword-value
          get-keyword-values
@@ -3273,9 +3272,9 @@ USA.
          keyword-option-parser
          last                          ;SRFI-1
          last-pair                     ;SRFI-1
-         length
+         length                        ;SRFI-1
          length=?
-         list
+         list                          ;SRFI-1
          list->weak-list
          list-copy                     ;SRFI-1
          list-deletor
@@ -3283,41 +3282,36 @@ USA.
          list-of-type?
          list-of-type?->length
          list-of-unique-symbols?
-         list-ref
+         list-ref                      ;SRFI-1
          list-set!
-         list-tail                     ;use SRFI-1 drop
          list=                         ;SRFI-1
          list?
          list?->length
          make-circular-list
          make-initialized-list
          make-list                     ;SRFI-1
-         map
-         member
+         map                           ;SRFI-1
+         member                        ;SRFI-1
          member-procedure
-         memq
-         memv
-         ninth
+         memq                          ;SRFI-1
+         memv                          ;SRFI-1
+         ninth                         ;SRFI-1
          non-empty-list?
          not-pair?                     ;SRFI-1
          null-list?                    ;SRFI-1
-         null?
-         pair?
+         null?                         ;SRFI-1
+         pair?                         ;SRFI-1
          reduce                        ;SRFI-1
          reduce-right                  ;SRFI-1
          restricted-keyword-list?
-         reverse
-         reverse!                      ;SRFI-1
-         reverse*
-         reverse*!
-         second
-         set-car!
-         set-cdr!
-         seventh
-         sixth
+         second                        ;SRFI-1
+         set-car!                      ;SRFI-1
+         set-cdr!                      ;SRFI-1
+         seventh                       ;SRFI-1
+         sixth                         ;SRFI-1
          sublist
-         tenth
-         third
+         tenth                         ;SRFI-1
+         third                         ;SRFI-1
          tree-copy                     ;SRFI-1
          unique-keyword-list?
          weak-delq!
@@ -3351,9 +3345,13 @@ USA.
   (files "srfi-1")
   (parent (runtime))
   (export deprecated ()
+         (list-head take)
+         (reverse* append-reverse)
+         (reverse*! append-reverse!)
          for-all?
          there-exists?)
   (export ()
+         (list-tail drop)
          any
          append-reverse
          append-reverse!
@@ -3399,6 +3397,8 @@ USA.
          partition!
          remove
          remove!
+         reverse
+         reverse!
          span
          span!
          split-at
index ac550476d6f84552bec7d5966694f679faf07175..96f065a59df3e5a56936c873c8fd44e432384729 100644 (file)
@@ -191,8 +191,8 @@ USA.
 
 (define (%open-block-actions open-block)
   (make-scode-sequence
-   (list-tail (cdr (scode-sequence-actions open-block))
-             (length (%open-block-names open-block)))))
+   (drop (cdr (scode-sequence-actions open-block))
+        (length (%open-block-names open-block)))))
 
 (define-integrable (make-open-block-descriptor names declarations)
   (vector open-block-tag names declarations))
index 0a0771195ce0afc55e7961aa069401bbba11d9a3..c9ad9ab87f65679b8d68b7440c86e5f083060045 100644 (file)
@@ -340,12 +340,18 @@ USA.
              len))
        len)))
 
+(define (reverse l)
+  (append-reverse l '()))
+
 (define (append-reverse rev-head tail)
   (let lp ((rev-head rev-head) (tail tail))
     (if (null-list? rev-head 'append-reverse)
        tail
        (lp (cdr rev-head) (cons (car rev-head) tail)))))
 
+(define (reverse! l)
+  (append-reverse! l '()))
+
 (define (append-reverse! rev-head tail)
   (let lp ((rev-head rev-head) (tail tail))
     (if (null-list? rev-head 'append-reverse!)
index cac40cd9fdcb0315ab8a957eb7c9c734bb07921f..cabf6234b1c4f75ad7f52dd56475d9bd332a11cc 100644 (file)
@@ -1387,7 +1387,7 @@ USA.
         (n (fix:- end start))
         (builder (string-builder n)))
     (do ((i 0 (fix:+ i 1))
-        (chars (list-tail chars start) (cdr chars)))
+        (chars (drop chars start) (cdr chars)))
        ((not (fix:< i n)))
       (guarantee char? (car chars) 'list->string)
       (builder (car chars)))
index 143f4296d7fc19431ade4e23833eb0a8eb98af87..0d2b226dea3ccfb0025f3754cd2e50189a88c82c 100644 (file)
@@ -317,7 +317,7 @@ USA.
   (if (pair? (pathname-directory pathname))
       (let loop ((pathname pathname) (np 1))
        (let ((directory (pathname-directory pathname)))
-         (let scan ((p (list-tail directory np)) (np np))
+         (let scan ((p (drop directory np)) (np np))
            (if (pair? p)
                (cond ((and (not (eq? (car p) 'up))
                            (pair? (cdr p))
index fa907ea89204496191537e3d0d8c3607ddbf750f..3185391453ca091d5ca9a8513f1954ad5b9dd3e3 100644 (file)
@@ -319,8 +319,8 @@ Examples:
            #f
            (reassign
             expr
-            (let ((l1 (list-head operands spare-args))
-                  (l2 (map2 (list-tail operands spare-args))))
+            (let ((l1 (take operands spare-args))
+                  (l2 (map2 (drop operands spare-args))))
               (cond ((null? l2)
                      (wrap block l1 (none block)))
                     ((null? (cdr l2))
index 1fee65eaee6ffca6acf75b392abbf8d3398c6989..4d1646aeab2c5e5b2c6c585335f6c1085ecd2d5c 100644 (file)
@@ -220,7 +220,7 @@ USA.
               (and (fix:> n-args arity-min)
                    (or (not arity-max)
                        (fix:<= n-args arity-max))
-                   (generator procedure (list-head tags arity-min))))))))
+                   (generator procedure (take tags arity-min))))))))
 \f
 (define (apply-generic-1 record)
   (lambda (a1)
index d00b64ad156c892a07b9eb75c204d34ef7cf3dda..4ad88bc19882a8be4d5b571e39a91866c818963e 100644 (file)
@@ -193,7 +193,7 @@ USA.
                (cond ((assq elicitor-name elicitors)
                       => (lambda (pair) (set-cdr! pair procedure)))
                      (else
-                      (set-car! (list-tail descriptor 4)
+                      (set-car! (drop descriptor 4)
                                 (cons (cons elicitor-name procedure)
                                       elicitors)))))))
        (else
index 422518918233123b6d902403f2412568be53cf70..0abab46102cef2185bc865e5b04f6837b135d4fb 100644 (file)
@@ -105,7 +105,7 @@ USA.
     (let ((end (length latin-alphabet)))
       (do ((i 0 (fix:+ i 1)))
          ((not (fix:< i end)))
-       (let ((chars (list-head latin-alphabet i)))
+       (let ((chars (take latin-alphabet i)))
          (let ((result (build-string chars)))
            (assert-true (legacy-string? result))
            (assert-string= result (chars->string chars))))
@@ -120,7 +120,7 @@ USA.
     (let ((end (length greek-alphabet)))
       (do ((i 0 (fix:+ i 1)))
          ((not (fix:< i end)))
-       (let ((chars (list-head greek-alphabet i)))
+       (let ((chars (take greek-alphabet i)))
          (assert-string= (build-string chars)
                          (chars->string chars)))
        (let ((strings (make-test-strings i greek-alphabet #f)))
@@ -161,7 +161,7 @@ USA.
   (let loop ((k 0) (strings '()))
     (if (fix:< k n)
        (loop (fix:+ k 1)
-             (cons (chars->string (list-head alphabet k))
+             (cons (chars->string (take alphabet k))
                    strings))
        (if reverse?
            strings
@@ -233,9 +233,9 @@ USA.
   (list->string
    (let ((l1 (string->list s1))
         (l2 (string->list s2 start end)))
-     (append (list-head l1 at)
+     (append (take l1 at)
             l2
-            (list-tail l1 (+ at (length l2)))))))
+            (drop l1 (+ at (length l2)))))))
 
 (define-test 'string-slice
   (let ((s "abcdefghijklmnopqrstuvwxyz"))