MiniKanren有"not“操作符吗?
例如,如何表示Prolog的
a :- b, not(c)如果a为真而c为假,则b为真(Prolog使用否定作为失败,即如果不能证明not(c)被认为是证明的)
Prolog的not也适用于非地面表达式。
a(X, d(Y)) :- b(d(X), d(Y)), not(c(d(X)))发布于 2017-08-12 21:00:48
据https://github.com/zhjhxxxjh/ykanren说,答案是否定的。
发布于 2017-08-13 04:11:27
在小型achieve中没有not操作符,但您可以实现与conda类似的功能。
(defmacro not
"fail if the given goal succeeds, use with extreme caution"
[goal]
`(conda
[~goal fail]
[succeed]))请参阅我对谷歌集团的类似问题
https://stackoverflow.com/questions/45644304
复制相似问题