Existe-t-il un moyen de faire ce travail sans utiliser le repos (j'ai essayé de mettre cdr lst où repos est mais ça me donne une erreur) plus comment puis-je supprimer la condition if - (if (> N 0) - parce que tout ce que je veux afficher à faire est sortie la liste - (liste nE)Remplacement pour le repos dans le régime?
(define (count lst)
(if (null? lst) '()
(let ((display (lambda (N E)
(if (> N 0) (list N E) (list N E)))))
(let loop ((rest (cdr lst))
(E (car lst))
(N 1))
(cond ((null? rest)
(list (display N E)))
((eq? E (car rest))
(loop (cdr rest) E (+ N 1)))
(else
(cons (display N E) (loop (cdr rest) (car rest) 1))))))))
Remarque: Comme 'display' est une fonction intégrée (imprime des valeurs), il semble étrange d'utiliser ce nom à d'autres fins. – soegaard