2011-02-17 1 views
1

안녕 난 프로 시저로 변경할 수있는 표현식을 반환합니다 함수를 작성하려고합니다. 예를 들어Scheme에서 변경 가능한 객체 인 표현식을 반환 하시겠습니까?

:

(fooeq 1 2)(eq? 1 2)

을 반환

((fooeq 1 2))는로 변환 할 수있는 기호를 인 식을 작성하는 방법이 있나요 #f

반환 순서?

편집 : 답변 해 주셔서 감사합니다. 누군가 다른 사람이 궁금해하는 경우에 (eval p)입니다.

+0

컴퓨터가 마술처럼'fooeq'를'eq? '로 바꾸는 것을 어떻게 알 수 있습니까? – Mehrdad

+0

이것은 임의의 예입니다. 미안해 좀 더 분명하게 해줘. 내 원래의 함수를 원한다. 그냥 foo라고 부르면 실제로 프로 시저처럼 평가 될 수있는 임의의 값을 반환한다. 그래서 나는 어떻게 '(eq 1 2)와 같은 가치를 취할 수 있는지 궁금하고 프로 시저처럼 취급합니다. – Brian

답변

1

난 당신이 fooeq 함수로 평가하고 싶은 생각 :

> (define (fooeq a b) 
    (lambda() (eq? a b))) 

> ((fooeq 1 2)) 
#f 
> ((fooeq 1 1)) 
#t 
> 

입력으로 하나 개 이상의 기능을 걸리거나 기능이 higher-order function로 알려져 출력하는 기능.

+0

+1 나는 OP의 질문에 대답하지 않더라도 OP가 eval로하기를 원하는 것보다 훨씬 더 나은 일을하기 때문에 대답을 좋아합니다. :-피 –

관련 문제