Scheme “unquote”作为准整数列表中倒数第二个符号时的行为
我正在尝试使用Quasikote生成列表1和2。我试过这个: `1引文2 然而,在Racket、MIT和Chez方案中,我得到了一个虚线列表:“1。二, 所以我试了一下: `1'取消报价2 然而,我得到了1'unquote 2 我终于用这个技巧得到了我想要的列表: `1不引用2,λx’不引用2;返回:“1”和“2” 当unquote是准整数列表中倒数第二个元素时,为什么要从准整数列表中得到一个虚线列表 实际上,它并不总是生成虚线列表。例如:Scheme “unquote”作为准整数列表中倒数第二个符号时的行为,scheme,racket,quasiquotes,Scheme,Racket,Quasiquotes,我正在尝试使用Quasikote生成列表1和2。我试过这个: `1引文2 然而,在Racket、MIT和Chez方案中,我得到了一个虚线列表:“1。二, 所以我试了一下: `1'取消报价2 然而,我得到了1'unquote 2 我终于用这个技巧得到了我想要的列表: `1不引用2,λx’不引用2;返回:“1”和“2” 当unquote是准整数列表中倒数第二个元素时,为什么要从准整数列表中得到一个虚线列表 实际上,它并不总是生成虚线列表。例如: `(1 unquote (list 2 3 4))
`(1 unquote (list 2 3 4)) ; Returns: '(1 2 3 4)
请解释这种奇怪的unquote行为,当它是准整数列表中倒数第二个元素时。根据
如果任何一个符号出现错误,
“取消报价”或“取消报价”拼接显示在中的位置,而不是上述位置
你的位置与上面描述的不一样-表格必须是无引号的表达式
它已升级为R6RS中的语法冲突。根据
如果任何一个符号出现错误,
“取消报价”或“取消报价”拼接显示在中的位置,而不是上述位置
你的位置与上面描述的不一样-表格必须是无引号的表达式
在R6RS中,它已升级为语法冲突。AB c是a的缩写。Bc
所以,准量子点1和2实际上是准量子点1。取消引用2,即“1”。二,
或者,如果您想完全扩展它,则quasikote 1 unquote 2是quasikote。1.取消报价。2 . .
类似地,Quasikote 1 unquote list 2 3 4实际上是Quasikote 1。取消引用列表2 3 4=准注释1。2 3 4='1 2 3 4
顺便说一句,使用Quasikote生成'1 unquote 2'的更简单方法是:
`(1 ,'unquote 2)
ABC是a的简写。Bc
所以,准量子点1和2实际上是准量子点1。取消引用2,即“1”。二,
或者,如果您想完全扩展它,则quasikote 1 unquote 2是quasikote。1.取消报价。2 . .
类似地,Quasikote 1 unquote list 2 3 4实际上是Quasikote 1。取消引用列表2 3 4=准注释1。2 3 4='1 2 3 4
顺便说一句,使用Quasikote生成'1 unquote 2'的更简单方法是:
`(1 ,'unquote 2)
[编写答案而不是注释,因为不可能在注释中正确设置反勾号的格式。Lisp/Scheme仍然比markdown处理得更好;-]
正如其他人所解释的,特别是Sorawee,unquote aka,是一个特殊的名字,当在一个准单数列表中,也就是backtick中时,会被特别处理。为了避免其特殊含义,一个简单的解决方法是确保特殊名称不会以文本形式出现。
请注意,与quote中的quote相比,quote中的unquote没有特殊含义
因此,这将适用于方案的所有变体:
定义unquote sym'unquote`unquote'在'quote'中,所以它在这里只是一个符号
`1,取消引用sym 2;'1引文2
[编写答案而不是注释,因为不可能在注释中正确设置反勾号的格式。Lisp/Scheme仍然比markdown处理得更好;-]
正如其他人所解释的,特别是Sorawee,unquote aka,是一个特殊的名字,当在一个准单数列表中,也就是backtick中时,会被特别处理。为了避免其特殊含义,一个简单的解决方法是确保特殊名称不会以文本形式出现。
请注意,与quote中的quote相比,quote中的unquote没有特殊含义
因此,这将适用于方案的所有变体:
定义unquote sym'unquote`unquote'在'quote'中,所以它在这里只是一个符号
`1,取消引用sym 2;'1引文2
第一种是印刷品;看看它的车,cadr和caddr。我没有时间为你调查另一个问题。第一个是印刷品;看看它的车,cadr和caddr。我没有时间为你调查另一个问题。好的,结果是反勾前面需要加反斜杠`在Markdown中请阅读我对的回答好的,结果是反勾前面需要加反斜杠`在Markdown中请阅读我对的回答