我在Racket中是一个新手,我尝试运行Chris Jester-Young的解决方案(How to convert string to variable-name in scheme)将字符串转换为变量名(及其相反,也就是将变量名转换为字符串):
#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)))))))
variable-name->string
很好,下面是一个示例:>(define myvar 10)
>(variable-name->string myvar)
"myvar"
但是,我对
string->variable-name
没有成功:>(define (string->variable-name "myvar2") 4)
error define: not an identifier, identifier with default, or keyword
for procedure argument in: "myvar2"
我正在使用Racket 6.6,Linux mint 17.3 64bits。
我的主要目标是如何将字符串转换为变量名(标识符)。
我在想:
define
设置具有随机整数的变量名称。 任何帮助,我将不胜感激。
最佳答案
您可以从here检查答案。
建议我不要使用字符串,而要使用标识符。因此,除了使用纯文本文件之外,您还可以使用其他带有您要使用的标识符的Racket源,然后导入该源。
关于string - Racket 语言:如何将字符串转换为变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994906/