(define (collect-linked-objects object-files) (let loop ((os object-files) (os2 object-files)) (if (null? os) (delete-duplicates (reverse os2) string=?) (let* ((o (car os)) (lfile (pathname-replace-extension o "link")) (newos (if (file-exists? lfile) (with-input-from-file lfile read) '()))) (loop (append newos (cdr os)) (append newos os2))))))