2013-10-06 2 views
0

기본적으로 두 개의 함수로 구성된 쌍이 있으며 코드는 x에 대한 최고 평가를 찾고 해당 평가를 인쇄하기 위해 쌍 입력 x를 가져야합니다.
다음과 같은 오류 메시지가 나타납니다. 자동차 : 계약 위반 예상 : 쌍? 주어진 : 4쌍을 사용하여 가장 큰 값을 계산할 두 함수 중 어느 것을 찾을 수 있습니까? Scheme

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) 

답변

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 
+1

내가 함수를 호출하는 방법에 대한 블랭킹했지만, 지금은 이해, 아주 많이 감사 오스카! – LostSchemer

관련 문제