基本上有一对由两个函数组成,代码必须采用对输入x
来找到x
的最高评估并打印该评估。
我收到错误:
汽车:合同违规预期:对?给出:4
define (max x)
(lambda (x) ;I wanted lambda to be the highest suitable function
(if (> (car x) (cdr x))
(car x)
(cdr x))))
(define one-function (lambda (x) (+ x 1)))
(define second-function (lambda (x) (+ (* 2 x) 1))) ;my two functions
((max (cons one-function second-function)) 4)
被调用的函数在哪里?你有两个名为x
的参数,它们必须有不同的名称。试试这个:
(define (max f) ; you must use a different parameter name
(lambda (x)
(if (> ((car f) x) ((cdr f) x)) ; actually call the functions
((car f) x)
((cdr f) x))))
现在它将按预期工作:
((max (cons one-function second-function)) 4)
=> 9