namespaces - 使用 eval 评估 Racket 中的表达式

标签 namespaces eval racket evaluation

我想用 eval 评估 Racket 中的表达式。例如,我的表达式是: (+ x 1)... 但我希望 x 是值列表中的每个值。我已经尝试过 let 但我现在知道 eval 没有看到用 let 定义的变量。我已经阅读了 abut namespace ,但仍然不知道如何将它们应用于我的问题。谢谢 !

最佳答案

这是你想要的吗?

> (map (lambda (n) (+ n 1)) '(2 5 3 1 99 12))
'(3 6 4 2 100 13)

如果你的表达式被引用,你可以

(define ns (make-base-namespace))
(define expr '(+ x 1))
(for/list ((x '(2 5 3 1 99 12)))
  (eval `(let ((x ,x)) ,expr) ns))
=> '(3 6 4 2 100 13)

但我敢肯定,如果您提供更多背景信息,会有更好的方法。

关于namespaces - 使用 eval 评估 Racket 中的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22742733/

相关文章:

actionscript-3 - 用于更新 AIR 应用程序 XML 混淆的命名空间值

java - 异常:"attempt to access org.rosuda.REngine.REXPGenericVector as String"

php - 使用 eval 解析表单输入的方程式的最安全方法

scheme - 什么是矢量 map ?

方案:添加到记录列表

loops - for循环方案

ios - Swift:创建模块(命名空间)

c# - ASP.NET 编译器找不到任何命名空间

php - 我在哪里放置我的自定义类和函数在 Laravel 中

perl - 在 Test::More 中的 eval 期间保护全局变量