【发布时间】:2014-04-26 02:40:22
【问题描述】:
我们称这个函数为“动态定义”。
基本上我想写一个像这样工作的宏或 lambda:
$ (dynamic-define "variable" 123)
$ variable
$ => 123
我试过了:
(define-syntax dynamic-define
(syntax-rules ()
((_ string <body>)
(eval `(define ,(string->symbol string) <body>)))))
它按预期工作,但似乎不是一个好的解决方案。
我尝试像这样不使用 eval:
(define-syntax dynamic-define
(syntax-rules ()
((_ string <body>)
(define (string->symbol string) <body>))))
但是当我尝试使用时,我得到了这个错误:
Error: invalid syntax (define (string->symbol "variable") 123)
我该怎么办?
(请:编辑此问题以适合母语英语并删除此行)
【问题讨论】: