Я хотел бы создать функцию Scheme, которая возвращает true, если ей передается список, который полностью состоит из идентичных элементов. Такой список будет «(1 1 1 1). Это приведет к false с чем-то вроде '(1 2 1 1).
Это то, что я имею до сих пор:
(define (list-equal? lst)
(define tmp (car lst))
(for-each (lambda (x)
(equal? x tmp))
lst)
)
Очевидно, что это неправильно, и я новичок в этом. Я думаю, что не могу выразить шаг, на котором я должен вернуть #t
или #f
.
Заранее спасибо!
EDIT:
Я немного поиграл и нашел решение, которое, кажется, работает очень хорошо и с минимальным количеством кода:
(define (list-equal? lst)
(andmap (lambda (x)
(equal? x (car lst)))
lst))
Еще раз спасибо за помощь всем.