この関数を「動的定義」と呼びましょう。
基本的に、次のように機能するマクロまたはラムダを書きたいと思います。
$ (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)
私は何をすべきか?
(お願い: この質問をネイティブの英語に合わせて編集し、この行を消去してください)