Eliminate reverse-string altogether. It's meaningless in Unicode.
authorChris Hanson <org/chris-hanson/cph>
Thu, 23 Feb 2017 06:10:36 +0000 (22:10 -0800)
committerChris Hanson <org/chris-hanson/cph>
Thu, 23 Feb 2017 06:10:36 +0000 (22:10 -0800)
doc/ref-manual/strings.texi
src/compiler/machines/C/stackify.scm
src/edwin/edwin.pkg
src/runtime/runtime.pkg
src/runtime/string.scm
src/runtime/ustring.scm

index c9274b07dded35c2c7884f4f0fd0dd2c0b472cc6..d4b442d6a943bac61be42940a1161d62085a5d6c 100644 (file)
@@ -467,18 +467,6 @@ Returns a newly allocated string containing the same characters as
 replaced by @var{char2}.
 @end deffn
 
-@deffn procedure reverse-string string
-Returns a newly allocated string with the same characters as
-@var{string} but in the reverse order.
-
-@example
-@group
-(reverse-string "foo bar baz")          @result{} "zab rab oof"
-(reverse-string (string-slice "foo bar baz" 4 7))   @result{} "rab"
-@end group
-@end example
-@end deffn
-
 @node Searching Strings, Matching Strings, Strings, Strings
 @section Searching Strings
 @cindex searching, of string
index 85d200544869597f763d56154753672f8cdeda04..dc29a76989094964b0aac54c7849780f1f151cb9 100644 (file)
@@ -502,10 +502,12 @@ USA.
          prog))
        ((bit-string? obj)
         (build/string stackify-opcode/push-bit-string
-                      (reverse-string
-                       (number->string
-                        (bit-string->unsigned-integer obj)
-                        16))
+                      (list->string
+                       (reverse
+                        (string->list
+                         (number->string
+                          (bit-string->unsigned-integer obj)
+                          16))))
                       (build/push-nat (bit-string-length obj) prog)))
        ((scode/primitive-procedure? obj)
         (let ((arity (primitive-procedure-arity obj))
index f1b6090c2dd00b53e5ec3d2402a97c00d665ac15..92d17a05eed124a57a9358254a2b49ff152003d1 100644 (file)
@@ -166,10 +166,6 @@ USA.
          make-string
          make-vector-8b
          random-byte-vector
-         reverse-string
-         reverse-string!
-         reverse-substring
-         reverse-substring!
          set-string-length!
          string
          string->list
index 7cfce3571c012e256ba3806c53f8cbda25b0a8fe..a7a8411dde3844c8fa9aee14261b27727e5765c3 100644 (file)
@@ -1031,7 +1031,6 @@ USA.
          (substring string-copy)
          list->string
          make-string
-         reverse-string
          string
          string*
          string->list
index cde00ab1bf5c6c651849e67771beee3d15306c4d..350ec683d4e86dde8c7e05a2c82e51ad4fb2ee5e 100644 (file)
@@ -296,7 +296,7 @@ USA.
 (define (%bm-substring-search-backward text tstart tend pattern pstart pend)
   (let ((m (fix:- pend pstart))
        (pend-1 (fix:- pend 1))
-       (rpattern (reverse-string (string-slice pattern pstart pend))))
+       (rpattern (reverse-pattern pattern pstart pend)))
     (let ((tstart+m (fix:+ tstart m))
          (lambda* (compute-last-occurrence-function rpattern 0 m))
          (gamma
@@ -352,9 +352,9 @@ USA.
 (define (compute-good-suffix-function pattern pstart pend gamma0)
   (let ((m (fix:- pend pstart)))
     (let ((pi
-          (compute-prefix-function
-           (reverse-string (string-slice pattern pstart pend))
-           0 m))
+          (compute-prefix-function (reverse-pattern pattern pstart pend)
+                                   0
+                                   m))
          (gamma (make-vector m gamma0))
          (m-1 (fix:- m 1)))
       (do ((l 0 (fix:+ l 1)))
@@ -390,6 +390,13 @@ USA.
            (vector-set! pi q k)
            (outer k (fix:+ q 1)))))
     pi))
+
+(define (reverse-pattern pattern pstart pend)
+  (let ((builder (string-builder)))
+    (do ((i (fix:- pend 1) (fix:- i 1)))
+       ((not (fix:>= i pstart)))
+      (builder (string-ref pattern i)))
+    (builder)))
 \f
 ;;;; Guarantors
 ;;
index b8c2590e3721daedda57b8615971a091d1fbac91..1f34cc2665333e66faf25e9400f81301173a9643 100644 (file)
@@ -830,21 +830,13 @@ USA.
 
 (define (burst-string string delimiter allow-runs?)
   ((string-splitter delimiter allow-runs?) string))
-\f
+
 (define (string-replace string char1 char2)
   (guarantee bitless-char? char1 'string-replace)
   (guarantee bitless-char? char2 'string-replace)
   (string-map (lambda (char)
                (if (char=? char char1) char2 char))
              string))
-
-(define (reverse-string string)
-  (let ((builder (string-builder)))
-    (do ((i (fix:- (string-length string) 1)
-           (fix:- i 1)))
-       ((not (fix:>= i 0)))
-      (builder (string-ref string i)))
-    (builder)))
 \f
 (define (string-8-bit? string)
   (receive (string start end) (translate-slice string 0 (string-length string))