diff --git a/collects/racket/list.rkt b/collects/racket/list.rkt index b5e7a7282a..b5c8888049 100644 --- a/collects/racket/list.rkt +++ b/collects/racket/list.rkt @@ -157,7 +157,10 @@ (define append* (case-lambda [(ls) (apply append ls)] ; optimize common case - [(l . lss) (apply append (apply list* l lss))])) + [(l1 l2) (apply append l1 l2)] + [(l1 l2 l3) (apply append l1 l2 l3)] + [(l1 l2 l3 l4) (apply append l1 l2 l3 l4)] + [(l . lss) (apply apply append l lss)])) (define (flatten orig-sexp) (let loop ([sexp orig-sexp] [acc null]) diff --git a/collects/racket/string.rkt b/collects/racket/string.rkt index f09ee199a3..d1cee90a32 100644 --- a/collects/racket/string.rkt +++ b/collects/racket/string.rkt @@ -4,7 +4,11 @@ (define string-append* (case-lambda [(strs) (apply string-append strs)] ; optimize common case - [(str . strss) (apply string-append (apply list* str strss))])) + [(s1 strs) (apply string-append s1 strs)] + [(s1 s2 strs) (apply string-append s1 s2 strs)] + [(s1 s2 s3 strs) (apply string-append s1 s2 s3 strs)] + [(s1 s2 s3 s4 strs) (apply string-append s1 s2 s3 s4 strs)] + [(str . strss) (apply apply string-append str strss)])) (require (only-in scheme/list add-between))