0

我发布了一些其他简单的代码,以澄清发生了什么

当我使用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不是为处理定义而设计的,那么是否有一些解决方法可以使它起作用?

我很感激任何帮助!

我认为这可能是我想在这里做的事情的另一种方法:如何将表达式列表解拼接到代码中?

4

2 回答 2

2

这是一个例子:

#lang racket
(define ns (make-base-namespace))
(define top-level-expressions
  '(begin 
     (define x 3)
     (+ x 1)))

(eval top-level-expressions ns)
于 2012-11-17T21:48:45.140 回答
1

正如球拍告诉你的那样,eval需要一个表达式作为参数。你应该传递'(define len (make-length 10))eval. 注意引号符号'

但我不确定你是否真的需要这样做,请先阅读一下目的和缺陷eval

于 2012-11-17T09:08:51.830 回答