I'm early in my Scheme journey, but here's a suggested fix:
(define-syntax-rule (with-readline-completion-function completer expr ...)
"With @var{completer} as readline completion function, call @var{expr ...}."
(let ((old-completer *readline-completion-function*))
(dynamic-wind
(lambda ()
(set! *readline-completion-function* completer))
(lambda () expr ...)
(lambda ()
(set! *readline-completion-function* old-completer)))))(export with-readline-completion-function)
