gpt4 book ai didi

Prolog:反向([],A)与反向(A,[])

转载 作者:行者123 更新时间:2023-12-02 11:39:05 24 4
gpt4 key购买 nike

我无法理解这一点:如果我给 Prolog reverse([], A). 它工作得很好,如果我给它 reverse(A, [] ). 并根据第一个建议回答 ; 它挂起!

为什么? (GNU Prolog 和 SICStus Prolog 的结果相同!)

aioobe@r60:~$ prolog
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- reverse([], A).

A = []

yes
| ?- reverse(A, []).

A = [] ? ;

Fatal Error: global stack overflow (size: 32768 Kb,
environment variable used: GLOBALSZ)

aioobe@r60:~$

最佳答案

对我来说,这似乎是对内置谓词的过度优化。无论第二个参数中列表的内容如何,​​都会出现相同的问题。根据 GProlog 手册,这是一个错误。请注意 template for reverse

reverse(?list, ?list)

进一步说 ?意思是“参数可以被实例化或者是一个变量”。

SWI-Prolog 版本 5.6.64 给出了预期结果。

?- reverse([], A).
A = [].

?- reverse(A, []).
A = [] ;
false.

关于Prolog:反向([],A)与反向(A,[]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3685137/

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