作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我无法理解这一点:如果我给 Prolog reverse([], A).
它工作得很好,如果我给它 reverse(A, [] ).
并根据第一个建议回答 ;
它挂起!
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/
我是一名优秀的程序员,十分优秀!