我一直在尝试学习Prolog,并在一些示例代码中遇到了这种语法。这个语法是什么意思? (Prolog)
solve(Hs) :- Hs = [_,_,_,_,_],
member(h(_, _, _, _, dog), Hs).
这仅仅是代码的一部分,但我很困惑与h(_,_,_,_,dog)
一样。
任何帮助将不胜感激!
我一直在尝试学习Prolog,并在一些示例代码中遇到了这种语法。这个语法是什么意思? (Prolog)
solve(Hs) :- Hs = [_,_,_,_,_],
member(h(_, _, _, _, dog), Hs).
这仅仅是代码的一部分,但我很困惑与h(_,_,_,_,dog)
一样。
任何帮助将不胜感激!
下划线_
只是表示该位置存在价值,但我们不关心它。
第一部分有效地说,Hs
是一个5项目列表。第二部分说在Hs
的列表中,其中一个项目是复合术语h/5
(h有5个子项),其中最后一个是原子dog
。
所有的下划线都可以匹配任何东西。这是一张通配符。你基本上是在寻找一个事实(?),最后一部分等于狗。