我有一个程序,其中我有两个数组。它们开始是空的,但通过程序,它们会被填充。
如果这是我的第一个功能:
program():-
populate_arrays([],[]),
carry_on().
为了将填充的数组传递给carry_on(),我必须在populate_arrays()中有四个参数吗?两个在启动时将数组声明为空,另外两个传递给carry_on()?
所以喜欢:
program():-
populate_arrays([],[],A,B),
carry_on(A,B).
看起来很尴尬我必须加倍参数
答案 0 :(得分:1)
是的,这就是你要做的。不,它并不尴尬,因为它们不是重复的:第一对是你的输入参数,第二对是你的输出结果。
这是一种常见的使用模式,对应于 状态转换 :旧 in ,new out 。您的知识状态由此谓词populate_arrays
更改。这反映在您如何使用它。
顺便说一句,如果起始值始终为[]
,则可以为“工作”谓词提供“包装器”:
populate_arrays( A, B):-
populate_arrays([], [], A, B).
populate_arrays( A, B, C, D):-
% your implementation ...