(define (& . l) (let loop ((l l) (s "")) (if (null? l) s (loop (cdr l) (string-append s (->string (car l))))))The problem is that the code doesn't say what it does. Consider this version:
(apply string-append (map ->string l))We're going to take a list of items, convert them all to strings, and paste the strings together. That's pretty much what that one-liner says is going to happen. The
loopversion has a lot of other cruft in it that is the machinery to iterate down a list. We want to abstract that away.
Perhaps we don't want to use
applyhere, though. Maybe we're worried about the stack space involved. This will do the trick:
(fold-left (lambda (s e) (string-append s (->string e))) "" l)