我试图在 Racket 博士中创建“应用 N 次”功能,但不知道我哪里出错了。我的代码似乎是正确的,但显然我遗漏了一些东西。下面打印的是代码和我得到的错误。
(define (applyNtimes F n)
(lambda (x)
(if (= n 0) x
(F (applyNtimes F (- n 1))))))
(define cdr3 (applyNtimes cdr 3))
(cdr3 '(1 2 3 4 4 5))
这是我得到的错误:
cdr: contract violation
expected: pair?
given: #
预期的输出应该是
(4 4 5)