Scheme 如何使评估工作在定义上?
我发布了一些其他简单的代码,以澄清发生了什么 当我对以下代码使用Scheme 如何使评估工作在定义上?,scheme,racket,Scheme,Racket,我发布了一些其他简单的代码,以澄清发生了什么 当我对以下代码使用eval时 #lang racket (define (test ) `( (define num 1) (define l (list)) (define num2 (add1 num)) (displayln num2))) (eval (test) (make-base-namespace)) 球拍向我尖叫定义值:不在定义上下文中:(定义值(num)1) 我的问题是: 如何使eval工
eval
时
#lang racket
(define (test )
`( (define num 1)
(define l (list))
(define num2 (add1 num))
(displayln num2)))
(eval (test) (make-base-namespace))
球拍向我尖叫定义值:不在定义上下文中:(定义值(num)1)
我的问题是:
- 如何使
工作在定义上李>eval
- 如果
不是设计用于定义的,那么是否有一些变通方法可以使其工作eval
我想这可能是我想在这里做的事情的另一种方式:正如racket告诉你的,
eval
需要一个表达式作为参数。您应该将'(定义len(使长度为10))
传递到eval
。注意引号”
但我不确定您是否真的需要这样做,请阅读first的目的和缺陷。正如racket告诉您的,
eval
需要一个表达式作为参数。您应该将'(定义len(使长度为10))
传递到eval
。注意引号”
但我不确定您是否真的需要这样做,请阅读first的目的和缺陷。以下是一个示例:
#lang racket
(define ns (make-base-namespace))
(define top-level-expressions
'(begin
(define x 3)
(+ x 1)))
(eval top-level-expressions ns)
以下是一个例子:
#lang racket
(define ns (make-base-namespace))
(define top-level-expressions
'(begin
(define x 3)
(+ x 1)))
(eval top-level-expressions ns)
你已经看过文件了吗?你已经看过文件了吗?