相关疑难解决方法(0)

从Lisp中的字符串创建变量名称

我正在尝试获取一个字符串,并将其转换为变量名称.我虽然(make-symbol)或(实习生)会这样做,但显然它不是我想要的,或者我错误地使用它.

例如:

> (setf (intern (string "foo")) 5)
> foo
  5
Run Code Online (Sandbox Code Playgroud)

在这里,我将尝试创建一个名为'foo'的变量,其值为5.除此之外,上面的代码给出了一个错误.我正在寻找什么命令?

symbols common-lisp

11
推荐指数
2
解决办法
3855
查看次数

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 …
Run Code Online (Sandbox Code Playgroud)

string variables dynamic definition racket

5
推荐指数
1
解决办法
2130
查看次数

标签 统计

common-lisp ×1

definition ×1

dynamic ×1

racket ×1

string ×1

symbols ×1

variables ×1