Common lisp 如何删除反引号内字符串的quotationmarks
想象一下,我得到一个宏调用的函数,返回一个表达式,如Common lisp 如何删除反引号内字符串的quotationmarks,common-lisp,Common Lisp,想象一下,我得到一个宏调用的函数,返回一个表达式,如 (do-something 'argument) 因此,函数必须看起来像 (defun form-expression (arg) `(do-something ',arg)) 但是当调用(表单表达式“foobar”)时,由于包装宏必须接收字符串作为参数,结果是: (do-something '"foobar") 如何“删除”给定字符串的引号?如果我理解正确,对于“foobar”的输入,您希望表单表达式的结果(dosomething
(do-something 'argument)
因此,函数必须看起来像
(defun form-expression (arg)
`(do-something ',arg))
但是当调用(表单表达式“foobar”)
时,由于包装宏必须接收字符串作为参数,结果是:
(do-something '"foobar")
如何“删除”给定字符串的引号?如果我理解正确,对于“foobar”的输入,您希望
表单表达式的结果(dosomething'foobar)
如果是这种情况,请使用函数。您需要传递intern
ed字符串(如(表单表达式(intern“foobar”))
),或者需要在函数中执行类型分派
(defun form-expression (arg)
`(do-something ',(if (stringp arg) (intern arg) arg)))
事实上,因为您正在分派参数的类型,所以这是使用方法的最佳位置
(defmethod form-expression (arg) `(do-something ',arg))
(defmethod form-expression ((str string)) `(do-something ',(intern str)))
如果我理解正确,对于“foobar”的输入,您希望表单表达式
的结果为(dosomething'foobar)
如果是这种情况,请使用函数。您需要传递intern
ed字符串(如(表单表达式(intern“foobar”))
),或者需要在函数中执行类型分派
(defun form-expression (arg)
`(do-something ',(if (stringp arg) (intern arg) arg)))
事实上,因为您正在分派参数的类型,所以这是使用方法的最佳位置
(defmethod form-expression (arg) `(do-something ',arg))
(defmethod form-expression ((str string)) `(do-something ',(intern str)))
你的问题是:如何去掉引号?
这个问题不是很有用
1:我们需要问,为什么会有“报价标记”
答:因为它是字符串的语法
这是一个字符串:“佛”
2:我们需要问一下,没有“报价标记”我们有什么
答:符号
这是一个符号:佛
3:如果我们有一个字符串,如何创建或获取相应的符号
我们需要使用INTERN
或FIND-SYMBOL
> (intern "buddha")
|buddha|
4:为什么有竖条
默认情况下,所有符号在内部都是大写的(在早期,有很多计算机只有大写字符,而Lisp早在大洪水之前就被发现了)
因此,当符号具有非大写字符时,Common Lisp使用竖线转义符号
5:如何获取正常的内部大写符号
使用函数STRING-UPCASE
:
> (intern (string-upcase "buddha"))
BUDDHA
现在我们实习了一位大佛你的问题是:我该如何去掉引号?
这个问题不是很有用
1:我们需要问,为什么会有“报价标记”
答:因为它是字符串的语法
这是一个字符串:“佛”
2:我们需要问一下,没有“报价标记”我们有什么
答:符号
这是一个符号:佛
3:如果我们有一个字符串,如何创建或获取相应的符号
我们需要使用INTERN
或FIND-SYMBOL
> (intern "buddha")
|buddha|
4:为什么有竖条
默认情况下,所有符号在内部都是大写的(在早期,有很多计算机只有大写字符,而Lisp早在大洪水之前就被发现了)
因此,当符号具有非大写字符时,Common Lisp使用竖线转义符号
5:如何获取正常的内部大写符号
使用函数STRING-UPCASE
:
> (intern (string-upcase "buddha"))
BUDDHA
现在我们已经实习了一位大佛