如何使 eval 工作在定义上? [英] How to make eval work on define?
本文介绍了如何使 eval 工作在定义上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我发布了一些其他简单的代码,以阐明正在发生的事情
当我在下面的代码上使用 eval
时
When I use eval
on the following code
#lang racket
(define (test )
`( (define num 1)
(define l (list))
(define num2 (add1 num))
(displayln num2)))
(eval (test) (make-base-namespace))
球拍向我尖叫 define-values: not in a definition context in: (define-values (num) 1)
我的问题是:
- 如何使
eval
在定义上起作用? - 如果
eval
不是为处理定义而设计的,那么是否有一些解决方法可以使它起作用?
- How to make
eval
work on definition? - If
eval
is not designed to work on definitions, then is there some workarounds that can make it work?
感谢您的帮助!
我认为这可能是我在这里想做的事情的另一种方式:如何将表达式列表拆分为代码?
推荐答案
这是一个例子:
#lang racket
(define ns (make-base-namespace))
(define top-level-expressions
'(begin
(define x 3)
(+ x 1)))
(eval top-level-expressions ns)
这篇关于如何使 eval 工作在定义上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文