定义一个函数来表示教堂数字中的整数 (DrRacket)
Defining a function to represent integers in Church numerals (DrRacket)
我正在尝试定义一个过程,它接受一个整数和 returns 它在教会数字中的表示。任何人都可以帮我弄清楚我犯的错误吗?下面的代码是我到目前为止能够做的。
(define succ
(lambda (cn)
(lambda (f)
(lambda (x)
(f ((cn f) x))))))
(define (n->cn n)
(if (= n 0)
zero
(succ (n->cn (lambda (x) (- x 1))))))
当我运行测试时:
(test (num->cn 3) three)
我收到以下错误:
exception (num->cn 3) at line 107
expected: <no-expected-value>
=: contract violation
expected: number?
given: #<procedure:...ad/racket-file.rkt:99:21>
argument position: 1st
other arguments...:
0
好像在等一个数字?但是给出了一个程序。我认为哪个符合程序的意图?感谢您对新手的帮助和评论。
n->ch
的参数应该是一个数字,而不是一个过程:
(define (n->cn n)
(if (= n 0)
zero
(succ (n->cn (- n 1)))))
我正在尝试定义一个过程,它接受一个整数和 returns 它在教会数字中的表示。任何人都可以帮我弄清楚我犯的错误吗?下面的代码是我到目前为止能够做的。
(define succ
(lambda (cn)
(lambda (f)
(lambda (x)
(f ((cn f) x))))))
(define (n->cn n)
(if (= n 0)
zero
(succ (n->cn (lambda (x) (- x 1))))))
当我运行测试时:
(test (num->cn 3) three)
我收到以下错误:
exception (num->cn 3) at line 107
expected: <no-expected-value>
=: contract violation
expected: number?
given: #<procedure:...ad/racket-file.rkt:99:21>
argument position: 1st
other arguments...:
0
好像在等一个数字?但是给出了一个程序。我认为哪个符合程序的意图?感谢您对新手的帮助和评论。
n->ch
的参数应该是一个数字,而不是一个过程:
(define (n->cn n)
(if (= n 0)
zero
(succ (n->cn (- n 1)))))