(module elimine-doublons (main analyse-fichier)) (define (analyse-fichier args) (let ((un-fichier (cadr args))) (call-with-input-file un-fichier lire-des-paragraphes))) (define (lire-des-paragraphes flux) (let boucle ((paragraphe (lire-un-paragraphe flux))) (if (eof-object? paragraphe) #f (begin (analyse paragraphe) (boucle (lire-un-paragraphe flux)))))) (define (lire-un-paragraphe flux) (let boucle ((paragraphe "") (ligne (read-line flux))) (if (eof-object? ligne) ligne (if (string=? ligne "") paragraphe (boucle (string-append paragraphe " " ligne) (read-line flux)))))) (define (analyse paragraphe) (let* ((regexp "(\\S+) \\1") (result (pregexp-replace* regexp paragraphe "**\\1 \\1**"))) (print result)))