我是Scheme编程的初学者。我知道Scheme中的点符号用于表示一对符号,例如'(a . b)。
第一个元素可以是符号,也可以是列表,没关系。但是特别是第二个元素必须是一个符号,如果不是,则可能是一个列表,例如,我们不能使用内置cons过程创建一个对。
所以有可能创建一对2个列表吗???好吧,我在想一个解决方案是将列表转换为符号,但实际上这是2个完全不同的东西->据我了解,这是不可能的。
这是我写的代码:
(define compare-attrs
(lambda (attribute1 attribute2)
(if (or (and (null? attribute1) (null? attribute2)) (and (not (null? attribute1)) (not (null? attribute2))))
(cons attribute1 attribute2)
#f)))
其中attribute1和attribute2是2个列表,我的输出是:
attribute1 atrribute2
预期输出:'(attribute1。attribute2)
请解释一下。预先感谢!!!
编辑:添加使用compare-attrs函数
函数compare-attrs用于提取描述实体属性的部分,并将cons它们组成一对,定义如下的实体:
(entity e0 (prov:label "entity e0")
(entity e1 (prov:location "London")
因此,这些实体的属性是(prov:label "entity e0")和(prov:location "London")。当应用功能compare-attrs时,因为这些属性不是null,所以我期望的输出是
`(prov:label "entity e0") . (prov:location "London")`
慕妹3242003
青春有我