我想創建一個Scheme函數,如果它傳遞一個完全由相同元素組成的列表,則返回true。這樣的清單將是'(1 1 1 1)。它會產生錯誤,如'(1 2 1 1)。Scheme:如何檢查列表中的所有元素是否相同
這是我到目前爲止有:
(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))
感謝大家的幫助。
這似乎也不起作用,我認爲它到頭了,並抱怨說它不能在單獨的元素上使用cadr。如果這有所作爲,我正在使用球拍/ Pretty Big。 – Joseph
這將炸燬一個元素的列表。編輯:約瑟夫是正確的,它會炸燬任何名單,當你到它的結尾。 –
@joseph:你說得對。只是我剛剛做出的小改動應該解決它。 – Daniel