1

我有一个程序,其中我有两个数组。他们开始是空的,但通过程序他们得到填充。

如果这是我的第一个功能:

program():-
  populate_arrays([],[]),
  carry_on().

为了将填充的数组传递给 carry_on(),我必须在 populate_arrays() 中有四个参数吗?两个在开始时将数组声明为空,另外两个传递给 carry_on()?

就像:

program():-
  populate_arrays([],[],A,B),
  carry_on(A,B).

似乎很尴尬,我必须将参数加倍

4

1 回答 1

1

是的,这就是你要做的。不,这并不尴尬,因为它们不是重复的:第一对是您的输入参数,第二对是您的输出结果。

这是一种常见的使用模式,对应于状态转换:旧。你的知识状态被这个谓词改变了,populate_arrays。这反映在您使用它的方式上。

顺便说一句,如果起始值 always [],您可以为“工作”谓词提供“包装器”:

populate_arrays( A, B):-
   populate_arrays([], [], A, B).

populate_arrays( A, B, C, D):-
   % your implementation ...
于 2012-08-11T17:53:10.160 回答