我希望以下表达式返回许多结果,每个结果都由两个 cons 单元格组成,其中两个 cons 单元格不等价。但是,它返回 0 个结果。为什么我没有结果?
(run* [c1 c2]
(fresh [lx ly x1 y1 x2 y2]
(== lx [1 2])
(== ly [4 5])
(membero x1 lx)
(membero x2 lx)
(membero y1 ly)
(membero y2 ly)
(conso x1 y1 c1)
(conso x2 y2 c2)
(!= c1 c2)))
预期结果示例:
[(1 . 4) (2 . 5)]
[(1 . 4) (1 . 5)]
[(2 . 4) (2 . 5)]
我不希望它返回像[(1 . 4) (1 . 4)]
每个缺点中的两个点都相等的结果。
如果我删除该(!= c1 c2)
部分,我会得到 16 个结果,包括两个缺点相同的结果。
如果替换为,我会得到预期的结果(!= c1 c2)
:
(conde
((!= x1 x2))
((!= y1 y2)))
它应该做同样的事情,但明确检查两个单元格。