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?)。