gpt4 book ai didi

Prolog:单项 vs 单项列表

转载 作者:行者123 更新时间:2023-12-04 20:20:21 25 4
gpt4 key购买 nike

在对学校的大型作业进行故障排除时,我发现了一个错误,我将单个项目列表(包含一个项目的堆栈)视为单个项目。我解决了我的问题,但是在进一步的测试中我注意到一些奇怪的事情:

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 而不是 is/2 会发生类似的行为。因此,无论出于何种原因,单个项目列表都被认为与单个项目相同,但仅适用于非负整数。

好奇心比什么都重要……有人知道这是为什么吗?

谢谢!

最佳答案

SWI-Prolog (也许还有其他人),这与 backward compatibility implementation 有关由 is/2 评估的表达式和 =:=/2 :

.(+Int,[])

A list of one element evaluates to the element. This implies "a" evaluates to
the character code of the letter `a' (97). This option is available for
compatibility only. It will not work if `style_check(+string)' is active as "a"
will then be transformed into a string object. The recommended way to specify the
character code of the letter `a' is 0'a.

由于字符代码是非负整数,这可以解释为什么您看到的行为仅适用于此类数字,而不适用于浮点数和负数。

关于Prolog:单项 vs 单项列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7329432/

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