我发布了一些其他简单的代码,以澄清正在发生的事情
当我在以下代码中使用eval
#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 can I unsplice a list of expression into code?
答案 0 :(得分:2)
以下是一个例子:
#lang racket
(define ns (make-base-namespace))
(define top-level-expressions
'(begin
(define x 3)
(+ x 1)))
(eval top-level-expressions ns)
答案 1 :(得分:1)
正如球拍告诉你的那样,eval
需要一个表达式作为参数。您应该将'(define len (make-length 10))
传递给eval
。请注意引号'
。
但我不确定你是否真的需要这样做,请首先阅读eval
的目的和缺陷。