想象一下,我得到了一些宏调用的函数来返回一个像这样的表达式
(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:如果我们有一个字符串,我们如何创建或获得相应的符号?
我们需要使用INTERN或FIND-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)
现在我们实习了一个大佛.