use tail recursion, not because of speed, but because breaking code would always have bad context dumps
svn: r17427 original commit: 9660490922a31892ae0ff132ae1c6d172154768d
This commit is contained in:
parent
6e02663d2d
commit
40cf224166
|
@ -173,19 +173,16 @@
|
|||
|
||||
(define (get-rest-of-multi-line-response communicator)
|
||||
(let ([receiver (communicator-receiver communicator)])
|
||||
(let loop ()
|
||||
(let loop ([r '()])
|
||||
(let ([l (get-one-line-from-server receiver)])
|
||||
(cond
|
||||
[(eof-object? l)
|
||||
((signal-error make-premature-close
|
||||
"port prematurely closed during multi-line response")
|
||||
communicator)]
|
||||
[(string=? l ".")
|
||||
'()]
|
||||
[(string=? l "..")
|
||||
(cons "." (loop))]
|
||||
[else
|
||||
(cons l (loop))])))))
|
||||
[(eof-object? l)
|
||||
((signal-error make-premature-close
|
||||
"port prematurely closed during multi-line response")
|
||||
communicator)]
|
||||
[(string=? l ".") (reverse r)]
|
||||
[(string=? l "..") (loop (cons "." r))]
|
||||
[else (loop (cons l r))])))))
|
||||
|
||||
;; get-multi-line-response :
|
||||
;; communicator -> number x string x list (string)
|
||||
|
@ -307,12 +304,7 @@
|
|||
;; list (string) x list (desired) -> list (string)
|
||||
|
||||
(define (extract-desired-headers headers desireds)
|
||||
(let loop ([headers headers])
|
||||
(if (null? headers) null
|
||||
(let ([first (car headers)]
|
||||
[rest (cdr headers)])
|
||||
(if (ormap (lambda (matcher)
|
||||
(regexp-match matcher first))
|
||||
desireds)
|
||||
(cons first (loop rest))
|
||||
(loop rest))))))
|
||||
(filter (lambda (header)
|
||||
(ormap (lambda (matcher) (regexp-match matcher header))
|
||||
desireds))
|
||||
headers))
|
||||
|
|
Loading…
Reference in New Issue
Block a user