我正在尝试将文字评估为 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))