如何使 eval 工作在定义上? [英] How to make eval work on define?

查看:49
本文介绍了如何使 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆