基本上有一个由两个函数组成的对,代码必须将对输入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