2010-11-05 278 views
4

我一直在尝试学习Prolog,并在一些示例代码中遇到了这种语法。这个语法是什么意思? (Prolog)

solve(Hs) :- Hs = [_,_,_,_,_], 
    member(h(_, _, _, _, dog), Hs). 

这仅仅是代码的一部分,但我很困惑与h(_,_,_,_,dog)一样。

任何帮助将不胜感激!

回答

5

下划线_只是表示该位置存在价值,但我们不关心它。

第一部分有效地说,Hs是一个5项目列表。第二部分说在Hs的列表中,其中一个项目是复合术语h/5(h有5个子项),其中最后一个是原子dog

2

所有的下划线都可以匹配任何东西。这是一张通配符。你基本上是在寻找一个事实(?),最后一部分等于狗。