我希望创建一个Scheme函数,如果传入的列表完全由相同元素组成,则返回true。这样的列表将是'(1 1 1 1)。像'(1 2 1 1)这样的列表将返回false。
以下是我目前的代码:
以下是我目前的代码:
(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))
再次感谢大家的帮助。
(equal?)
没有参数 =>#t
。 - JasonFruitequal?
不像=
那样是可变参数的。 :-)(例如我用Racket测试过:“equal?:期望2个参数,给出3个:1 2 3”)你只能使用折叠,抱歉。 :-P - C. K. Young