gpt4 book ai didi

prolog - `nth0/3` N 未绑定(bind)时的行为

转载 作者:行者123 更新时间:2023-12-01 22:28:49 27 4
gpt4 key购买 nike

如果我在 SWI Prolog 中输入“nth0”查询,结果是:

?- nth0(N,X,a).
N = 0,
X = [a|_G282] ;
N = 1,
X = [_G281, a|_G285] ;
N = 2,
X = [_G281, _G284, a|_G288] ;
... etc

但是,SWI 手册说:

Errors
type_error(integer, Index) if Index is not an integer or unbound.

所以,如果我对这段文字的理解是正确的(?),似乎应该触发错误而不是之前的结果。

此外,我想知道考虑到 ISO 标准,哪一种行为是正确的。

(我知道 stack-overflow 不允许引用问题,所以,我不会要求提供标准链接,但如果我问:ISO 标准是否公开可用,我希望不要违反规则?如果没有,有任何等效的 RFC 吗?)。

最佳答案

如果我没看错的话,它说的是

nth0(?Index, ?List, ?Elem)

"... if Index is not an integer or unbound."

In the example, Index is unbound:

?- nth0(N, L, E).
N = 0,
L = [E|_G1103] ;
N = 1,
L = [_G1102, E|_G1106] ;
N = 2,
L = [_G1102, _G1105, E|_G1109] .

那么你会不会误读了手册?

只是为了确保:手册应理解为“...如果Index不是(或(整数,未绑定(bind)))”。当 Index 未绑定(bind)时,它会开始枚举有效列表,其中 Index 可以为 0 或更大。

关于prolog - `nth0/3` N 未绑定(bind)时的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30529406/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com