Tu utilises quel environnement scheme ? first et rest c'est équivalent à car et cdr, je suppose ?
Si tu peux utiliser append, la première réponse dans le lien de LornMalvo fait l'affaire.
Sans append, tu peux faire ça:
(define (dup lst)
(if (empty? lst)
'()
(cons (car lst)
(cons (car lst) (dup (cdr lst))))))