2014-11-07 2 views
-2

2 개의 함수가 Scheme에서 동일한 값을 반환하는지 확인하는 함수를 정의하는 방법은 무엇입니까?Scheme에서 함수의 반환 값 비교?

이것은 현재 코드이지만 오류가 있습니다.

(define (equal-value f1 f2) 
    (define f1_result (lambda (x) (f1 x))) 
    (define f2_result (lambda (x) (f2 x))) 
    (if (equal? f1_result f2_result) true false) 
) 

무엇이 잘못 되었습니까?

+0

** 잘못된 점에 대한 아이디어가 있습니까? ** 오류 메시지가 나타 났습니까? 아무것도? –

답변

1

일부 문제 :

  • x

    가 정의되어 있지 않습니다. 매개 변수로 x을 전달하거나 다른 곳에 정의해야합니다.
  • 또한 코드에서 f1_resultf2_result은 실제로 값이며 값이 아닌 함수입니다.

    (define (equal-value f1 f2 x) 
        (define f1_result (f1 x)) 
        (define f2_result (f2 x)) 
        (equal? f1_result f2_result)) 
    

    이 더 압축 될 수 있습니다 :

코드를 수정 여기

(define (equal-value f1 f2 x) 
    (equal? (f1 x) (f2 x))) 

는 사용의 예는 다음과 같습니다 또한

; Defining two functions 
(define func1 (lambda (x) (+ x 5))) 
(define func2 (lambda (x) (* x 2))) 

(equal-value func1 func2 3) ; will return #f 
(equal-value func1 func2 5) ; will return #t 

, 당신은 돈 ' 이 작업을 수행하려면 함수 호출이 필요합니다. 당신이 원하는 곳 어디에서도 평등 확인을 수행 할 수 있습니다.