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、それを機能させる回避策はありますか?

どんな助けにも感謝します!

これは、ここでやりたいことの別の方法かもしれないと思います: How can I unsplice a list of expression into code?

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。quote-sign に注意してください'

evalしかし、本当にそれを行う必要があるかどうかはわかりません。最初の目的と欠陥について読んでください。

于 2012-11-17T09:08:51.830 に答える