File tree Expand file tree Collapse file tree 1 file changed +11
-9
lines changed Expand file tree Collapse file tree 1 file changed +11
-9
lines changed Original file line number Diff line number Diff line change @@ -76,15 +76,17 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
7676(define (utf8string->list s ) (map integer->utf8char (utf8string->unicode s)))
7777
7878(define (list->utf8string lst )
79- (define len 0)
80- (for-each (lambda (l ) (set! len (fx+ len (string-length l)))) lst)
81- (let ((offset 0 )
82- (result (make-string len)))
83- (for-each (lambda (s )
84- (for-each (lambda (c ) (string-set! result offset c) (set! offset (fx+ offset 1 ))) (string->list s))
85- ) lst)
86- result
87- ))
79+ (let* ((len (do ((i 0 (fx+ i (string-length (car lst))))
80+ (lst lst (cdr lst)))
81+ ((null? lst) i)))
82+ (result (make-string len)))
83+ (do ((lst lst (cdr lst))
84+ (offset 0 (fx+ offset (string-length (car lst)))))
85+ ((null? lst) result)
86+ (do ((strlst (string->list (car lst)) (cdr strlst))
87+ (offset2 offset (fx+ offset2 1 )))
88+ ((null? strlst) offset2)
89+ (string-set! result offset2 (car strlst))))))
8890
8991(define (utf8substring s ofs len )
9092 (list->utf8string (sublist (utf8string->list s) ofs len)))
You can’t perform that action at this time.
0 commit comments