如果您定期编写Prolog程序,您可能拥有自己依赖的谓词库。一些Prolog系统带有丰富的预定义谓词,有些则没有。有些系统有库,但它们与其他系统大多不兼容。此外,许多现有的库包含许多很少需要的谓词。但是,有一些谓词“应该”始终存在。然后,自11月like this和Cor.2(draft)以来取得了一些进展。为什么不在这里呢?
那么你最喜欢的谓词是什么?这是谓词,未在ISO核心中定义。
首先:between/3
,member/2
,length/2
,dif/2
,maplist/2
,...
对于DCG:seq//1
,iseq//1
,... //0
。
<小时/> 编辑:可以找到Prolog序言的初稿here!
答案 0 :(得分:4)
非常好的问题。除了member/2
,length/2
,maplist/2
(您已经建议)之外,我推荐transpose/2
,就像在Haskell中一样。还有memberchk/2
,select/3
和append/3
。为了帮助用户进行调查,您是否可以提供Prolog程序,该程序按术语(逐个子句)处理给定的Prolog文件术语,记录它所定义的谓词,跟踪它调用的谓词,以及从中(可能是可选的)减去它显式导入的库提供的谓词?在几个源文件上运行这样的程序可以为Prolog提供一个有用的“prolog”库的良好起点。