전적으로 동일한 요소로 구성된 목록이 전달되면 true를 반환하는 Scheme 함수를 만들고 싶습니다. 그러한 목록은 '(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