Scheme “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))

我正在尝试使用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))  ; 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中请阅读我对的回答