prolog定义中的输入/输出参数

prolog定义中的输入/输出参数,prolog,Prolog,prolog定义中的输入/输出参数之间是否存在差异?这与scheme和C等其他语言相比如何 好吧,输入和输出参数之间存在差异,但让我们用一个例子来说明: ?- length([1, 2, 3], 3). true. 这里我们的参数都是输入,谓词用作测试 ?- length([1, 2, 3], L). L = 3. 这里我们的参数是+,-。谓词用作列表长度计算器 ?- length(X, 3). X = [_A, _B, _C]. 这里我们的论点是-,+。谓词用作列表骨架生成器 ?- le

prolog定义中的输入/输出参数之间是否存在差异?这与scheme和C等其他语言相比如何

好吧,输入和输出参数之间存在差异,但让我们用一个例子来说明:

?- length([1, 2, 3], 3).
true.
这里我们的参数都是输入,谓词用作测试

?- length([1, 2, 3], L).
L = 3.
这里我们的参数是+,-。谓词用作列表长度计算器

?- length(X, 3).
X = [_A, _B, _C].
这里我们的论点是-,+。谓词用作列表骨架生成器

?- length(X, L).
X = [], L = 0;
X = [_A], L = 1;
X = [_A, _B], L = 2;
% etc, infinite.
这里我们的论点是-,-。谓词用作越来越长的列表的生成器

因此,length/2在输入和输出参数之间并没有任何区别,它只是根据调用方式的不同而有不同的用途

另一方面:

?- X is 3 + 2.
X = 5.
工作,而

?- 5 is A + 2.
引发未充分实例化的参数错误。。。如果你想一想,这是很正常的,因为要在所有情况下给出答案,is/2必须是一个非常高级的解算器


我希望这些示例将帮助您区分不同类型的参数。

好吧,输入和输出参数之间存在差异,但让我们用一个示例来说明:

?- length([1, 2, 3], 3).
true.
这里我们的参数都是输入,谓词用作测试

?- length([1, 2, 3], L).
L = 3.
这里我们的参数是+,-。谓词用作列表长度计算器

?- length(X, 3).
X = [_A, _B, _C].
这里我们的论点是-,+。谓词用作列表骨架生成器

?- length(X, L).
X = [], L = 0;
X = [_A], L = 1;
X = [_A, _B], L = 2;
% etc, infinite.
这里我们的论点是-,-。谓词用作越来越长的列表的生成器

因此,length/2在输入和输出参数之间并没有任何区别,它只是根据调用方式的不同而有不同的用途

另一方面:

?- X is 3 + 2.
X = 5.
工作,而

?- 5 is A + 2.
引发未充分实例化的参数错误。。。如果你想一想,这是很正常的,因为要在所有情况下给出答案,is/2必须是一个非常高级的解算器

我希望这些示例将帮助您区分不同类型的参数