0
我一直在這個問題上停留了一段時間。我將一個謂詞和一個列表傳遞給方案中的另一個函數。如果謂詞爲真,則將其添加到答案列表中,否則將跳過它。例如,(myfilt positive? '(1 -2 3))
應該是(1 3)
。但我一直在收到(1 . 0)
。尾遞歸和CPS
(define myfilt
(letrec ([testfilt (lambda (x poly function)
(if (empty? poly)
(function '())
(testfilt x (rest poly)
(lambda (v)
(function (if (x (car poly))
(cons (car poly) v)
0))))))]
[identity (lambda (x) x)])
(lambda (x poly)
(testfilt x poly identity))))