5
在排查学校更大的作业时,我发现我犯了一个错误,我在那里处理单个项目列表(一个项目堆栈),就好像它是单个项目一样。我解决了我的问题,然而,在进一步的测试,我注意到一个很奇怪:序言:单个项目与单个项目列表
48 ?- 1 is [1].
true.
49 ?- -1 is [-1].
ERROR: is/2: Type error: `character' expected, found `-1'
50 ?- 0.66 is [0.66].
ERROR: is/2: Type error: `character' expected, found `0.66'
类似的现象偏偏使用=:=/2,而不是为/ 2。因此,无论出于何种原因,单个项目列表被视为与单个项目相同,但仅限于非负整数。
好奇心比什么都重要...有人知道这是为什么吗?
谢谢!
谢谢!这似乎是答案,因为“97是[a]”。是真的。不过,也许我是个白痴,但我无法真正理解在手册页上描述的内容。列出的谓词(最小值,最大值,绝对值等)对我来说似乎并不存在,我不明白为什么所有参数都有前面的+号。我不明白为什么与这个Q有关的谓词只是一个有两个参数的点,我没有使用类似的东西。 – The111
该页面关于SWI-Prolog;也许你的实现不支持最小值,最大值等?一些参数前面加了'+',因为这表示模式,即'+'表示绑定(而不是变量)。最后,列表语法'[a,b]'是'。/ 2'列表构造函数谓词的缩写(所以实际上是'。(a,。(b,[]))'')。在你的情况下,像'[1]'这样的单个整数列表是'。(1,[])'的缩写。 – sharky
好的,很好的解释......我想我现在明白了。再次感谢。 – The111