2014-01-09 2 views

답변

0

repl 함수를 eval unit에서 사용할 수 있으며 인수에 eval을 호출하기 전에 목록 또는 람다 인 경우 심볼을 추적하는 평가 함수로 전달할 수 있습니다. 동적으로 표현을 정교하게 할 수 있기 때문에

+0

아마도 이것은 repl에 대한 경험이 부족한 것이지만 어떻게 도움이되는지는 알 수 없습니다. –

+0

그리 어렵지 않습니다. 모두 SICP의 4 장에 설명되어 있습니다. 이 평가자 구현 (https://github.com/jacktrades/Scheme-Meta-Circular-Evaluator)을 확인하십시오. meta-eval 람다에 코드를 추가하여 사용하는 기호를 추적하면됩니다. (extension-symbol-utils가 필요한 경우 멋진 인쇄를 위해 symbol-> keyword lambda를 사용할 수 있습니다). 파일 포트에 모든 심볼 이름을 덤프하면됩니다. 당신은 사용 된 목록이나 람다 (procedure? test)의 모든 이름으로 끝날 것입니다. meta-repl 내부에서 메인 프로그램을로드하는 것을 잊지 마십시오. – ramrunner

0

사용되는 최상위 항목을 결정하는 것은 불가능하다 :

(eval (list (string->symbol "+") 1 2)) → 3 

프로그램의 모든 가능한 순열을 평가하는 데 필요한 것입니다.

+0

그러나이 질문에 대해서는 이러한 접근법이 코드에서 사용되지 않았다고 가정합니다. –

0

코드를 모듈에 넣으면 코드를 컴파일 할 때 사용되지 않은 식별자가 없다는 경고가 표시됩니다 (표시하려면 csc -v 사용해야 할 수도 있음).

관련 문제