Ale*_*eia 5 string variables dynamic definition racket
我对 Racket 很陌生,我尝试运行Chris Jester-Young的解决方案(How to conversion string to variable-name in schema)将字符串转换为变量名(及其相反,换句话说,将变量名转换为细绳):
#lang racket
(define-syntax string->variable-name
(lambda (stx)
(syntax-case stx ()
((_ str)
(string? (syntax->datum #'str))
(datum->syntax #'str (string->symbol (syntax->datum #'str)))))))
(define-syntax variable-name->string
(lambda (stx)
(syntax-case stx ()
((_ id)
(identifier? #'id)
(datum->syntax #'id (symbol->string (syntax->datum #'id)))))))
Run Code Online (Sandbox Code Playgroud)
这对于 来说很好variable-name->string,这里是一个例子:
>(define myvar 10)
>(variable-name->string myvar)
"myvar"
Run Code Online (Sandbox Code Playgroud)
但是,我没有成功string->variable-name:
>(define (string->variable-name "myvar2") 4)
error define: not an identifier, identifier with default, or keyword
for procedure argument in: "myvar2"
Run Code Online (Sandbox Code Playgroud)
我使用的是Racket 6.6,linux mint 17.3 64 位。
我的主要目标是如何将字符串转换为变量名(标识符)。
我想知道:
define随机整数设置变量名称。任何帮助我都会感激。