REPL을위한 두 가지 옵션이 있습니다 (라이브러리를 사용하면 이러한 코드를 작성할 수도 없습니다).
1 : 상호 작용 환경을 재설정하십시오.
(interaction-environment (new-interaction-environment))
으로 수행 할 수 있습니다.
샘플 :
> (define x 5) (+ x 5)
10
> (interaction-environment (new-interaction-environment))
> (+ x 5)
Unhandled exception during evaluation:
&undefined
&message: "attempted to use undefined symbol"
&irritants: (x)
2 : C#으로 붙잡고 새로운 상호 작용 환경을 만듭니다.
동시 환경을 원한다면이 옵션이 가장 좋습니다. 나는이 접근법을 IronScheme online evaluator에 사용한다.
샘플 :
"(define x 1.0) (+ x 5.0)".Eval();
var env = "(new-interaction-environment)".Eval();
"(+ x 3.0)".EvalWithEnvironment(env);
가능한 해결 방법 :
Func<object> reset =
"(lambda() (interaction-environment (new-interaction-environment)))".
Eval<Callable>().Call;
"(define x 1.0) (+ x 5.0)".Eval();
reset();
"(+ x 5.0)".Eval();
큰 물건, 트릭을했다. 감사! – pcbulldozer
@pcbulldozer : 문제 없음 :) 더 많은 문제가 있으면 알려주세요. – leppie