1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-29 22:40:34 +02:00

micro-optimization in (web server)

* module/web/server.scm (extend-response): Micro-optimize to not mutate
  data, and to copy as little as possible.
This commit is contained in:
Andy Wingo 2012-03-06 22:22:31 +01:00
parent 24ea9f9c3a
commit 3c12fc3595

View file

@ -198,11 +198,13 @@ values."
(display str port)))))
(define (extend-response r k v . additional)
(define (extend-alist alist k v)
(let ((pair (assq k alist)))
(acons k v (if pair (delq pair alist) alist))))
(let ((r (build-response #:version (response-version r)
#:code (response-code r)
#:headers
(assoc-set! (copy-tree (response-headers r))
k v)
(extend-alist (response-headers r) k v)
#:port (response-port r))))
(if (null? additional)
r