(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)))