J'aimerais créer une fonction Scheme qui donne vrai si on lui passe une liste composée entièrement d'éléments identiques. Une telle liste serait '(1 1 1 1 1). Elle donnerait faux avec quelque chose comme "(1 2 1 1)".
Voici ce que j'ai jusqu'à présent :
(define (list-equal? lst)
(define tmp (car lst))
(for-each (lambda (x)
(equal? x tmp))
lst)
)
Il est clair que c'est incorrect, et je suis nouveau dans ce domaine. Je suppose que je n'arrive pas à exprimer l'étape où je suis censé retourner #t
o #f
.
Merci d'avance !
EDIT : J'ai bricolé un peu et j'ai trouvé une solution qui semble fonctionner très bien, et avec une quantité minimale de code :
(define (list-equal? lst)
(andmap (lambda (x)
(equal? x (car lst)))
lst))
Merci encore pour votre aide à tous.