如何删除反引号内的字符串的引号

Sim*_*Sim 1 common-lisp

想象一下,我得到了一些宏调用的函数来返回一个像这样的表达式

(do-something 'argument)
Run Code Online (Sandbox Code Playgroud)

因此功能必须看起来像

(defun form-expression (arg)
  `(do-something ',arg))
Run Code Online (Sandbox Code Playgroud)

但是当调用时(form-expression "foobar"),由于包装宏必须接收字符串作为参数,结果是:

(do-something '"foobar")
Run Code Online (Sandbox Code Playgroud)

如何"删除"给定字符串的引号?

Rai*_*wig 11

你的问题是:如何摆脱引号?

这个问题确实没用.

1:我们需要问一下,为什么有"引号"?

答:因为它是字符串的语法.

这是一个字符串:"buddha".

2:我们需要问一下没有"引号"我们有什么?

答案:符号.

这是一个象征:buddha.

3:如果我们有一个字符串,我们如何创建或获得相应的符号?

我们需要使用INTERNFIND-SYMBOL.

> (intern "buddha")
|buddha|
Run Code Online (Sandbox Code Playgroud)

4:为什么它垂直吧?

默认情况下,所有符号都是内部大写的(在早期,有很多计算机只有大写字符,并且在大洪水之前很久就发现了Lisp).

所以Common Lisp使用垂直条来转义符号,当它们具有非大写字符时.

5:如何获得正常的内部大写符号?

使用功能STRING-UPCASE:

> (intern (string-upcase "buddha"))
BUDDHA 
Run Code Online (Sandbox Code Playgroud)

现在我们实习了一个大佛.