【发布时间】:2012-09-07 23:04:33
【问题描述】:
我正在尝试将文字评估为 Scheme 中的表达式(目前使用 Guile)。示例:
(define x '(+ 6 6))
(define y (evaluate-literal x)) ; Expected result: y = 12
(这里,evaluate-literal 是我正在寻找的占位符。)是否有一个 lisp 函数/习语可以做到这一点?我之所以需要这样做是因为表达式在定义时可能是无效的,但稍后在评估时会是一个有效的表达式。
目前我的解决方法是使用delay 和force,但这不是很优雅:
(define x (delay (+ 6 6)))
(define y (force x))
【问题讨论】:
-
你可以使用
eval,我想。但我认为delay甚至普通的lambda更可取。 -
在这种情况下你会如何使用
lambda? -
@fyl 我编辑了我的答案,展示了如何使用
lambda
标签: scheme expression literals evaluation