0

式を指定して実行する次の関数があります。

(define (foo exp0) exp0)

私が次のことをした場合:

(define x 5)
(foo (+ x 4))
(foo (* x 2))
display(x)

display(x) に 18 を表示させたいのですが、基本的に、指定された式の値を指定された変数に戻すにはどうすればよいですか?

4

2 に答える 2

2

更新している変数が常に最初のオペランドであることを保証できる場合は、実際にそのようなマクロを作成できます。

(define-syntax foo
  (syntax-rules ()
    ((foo (op var arg ...))
     (set! var (op var arg ...)))))
于 2013-10-10T01:58:00.953 に答える