0

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

1 回答 1

2

函数在哪里被调用?而且您有两个参数称为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
于 2013-10-07T00:20:55.787 回答