【发布时间】:2021-01-05 00:19:41
【问题描述】:
考虑带有流模型 (i,o) 的 PROLOG 谓词 f(list,integer)。
f([],0).
f([H|T],S):-
f(T,S1),
S1 is S-H.
给出评估结果 f([1,2,3,4,5,6,7,8],S)?证明答案。
我看到我们收到错误“参数没有充分实例化”,这是因为 S 的值最终没有更新(仅当列表为空时)。这是一个很好的理由吗?
【问题讨论】:
-
您的第二个子句中可能有两个拼写错误,应该是
f([H|T], S):- f(T, S1), S is S1-H.或f([H|T], S1):- f(T, S), S1 is S-H. -
“流模型”一词从何而来?通常有人说谓词支持“模式”(在这种情况下,模式
(+,?):第一个参数是in,第二个参数是“out”或者可以设置,在这种情况下谓词“验证”)