在C#中重置IronScheme引擎
有没有办法“重置”IronScheme引擎? 我本质上的目标是确保连续调用string.Eval()是独立执行的。
例如,我想要执行
"(define x 1.0) (+ x 5.0)".Eval()
然后重置,并接听电话
"(+ x 3.0)".Eval()
如果它被自己执行就会失败。
更好的方法是为每个n个并发线程提供一个独立的空间来执行。
REPL有2个选项(使用库甚至不允许你编写这样的代码; p)。
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在线评估程序 。
样品:
"(define x 1.0) (+ x 5.0)".Eval(); var env = "(new-interaction-environment)".Eval(); "(+ x 3.0)".EvalWithEnvironment(env);
可能的方法:
Func