Схема: Как проверить, являются ли все элементы списка идентичны

Я хотел бы создать функцию схемы, которая дает True, если она передается список, который состоит полностью из идентичных элементов. Такой список будет «(1 1 1 1). Это даст ложь с чем-то вроде «(1 2 1 1).

Это то, что у меня до сих пор:

    (define (list-equal? lst)
      (define tmp (car lst))
      (for-each (lambda (x) 
                   (equal? x tmp))
                 lst)
      )

ясно, что это неверно, и я новичок в этом. Я думаю, что я не могу выразить шаг, где я должен вернуться #t или #f .

заранее спасибо!

Редактировать: Я немного смотрел и обнаружил решение, которое, кажется, очень хорошо работает, и с минимальным количеством кода:

(define (list-equal? lst)
 (andmap (lambda (x) 
        (equal? x (car lst)))
      lst))

снова спасибо за помощь всем.

5
задан Joseph 6 September 2011 в 14:14
поделиться