我正在学习积累和折叠,但我的代码中有问题。我想比较所有列表中的元素,但 foldr 只使用第一个和第二个元素。这是我的代码:
(define accum?
(lambda (list1 pre?)
(foldr (lambda (x y)
(if (pre? (car list1) (cadr list1)) #t #f))
#f
list1)))
(accum? '(1 2 3 4) <) --> #t
(accum? '(3 2 3 4) <) --> #f
(accum? '(1 2 5 4) <) --> #t (should be #f)
(accum? '(5 7 2 3) <) --> #t (should be #f)
你知道哪里错了吗?顺便说一句,最好只使用 (pre? (car list1) (cadr list1)) 而不使用 if --> (if <...> #t #f)?