为什么[] = _.在Prolog中是真的吗?

921*_*iyo 3 prolog

我正在学习Prolog,并且不明白为什么?- [] = _.在SWI-Prolog中返回true. []是一个空列表,_意味着它不是空的,对吧?
有人可以解释上述逻辑吗?

Isa*_*bie 9

_是一个逻辑变量,就像X以下划线或大写字母开头的任何其他东西一样.自由变量(即,尚未绑定到某个术语的变量)可以与任何东西统一.一个目标,例如[] = X说"统一X使用[]",这一说法,如果成功,每次使用的效果X将参照项[].

随着_作为变量,这是一样的X,与例外_匿名的变量:它不能重复使用,它的名称并不重要,不同的出现_是指不同的变量.所以_在遇到目标之前永远不会受到约束[] = _.因此,这种统一成功,这就是你得到答案的原因true.

_本身并不意味着"不空".但是你可能会对它作为占位符的使用感到困惑:L = [_,_,_]意味着它L是三个元素的列表(我们对此一无所知).在这个意义上_意味着"这里有一些东西".但它必须这个含义的列表中.