问题标签 [iso-prolog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
623 浏览

stream - 在 Prolog 中读取流时是否总是需要使用 '.\n' ?

我正在使用管道来通信两个 Prolog 进程,每次我到达read/2谓词以从我的管道中读取消息时,程序都会阻塞并保持这种状态。我不明白为什么会发生这种情况(我尝试了非常简单的程序),最后我意识到了三件事:

  1. 每次我write/2用来发送消息时,发送者进程都必须以.\n. 如果消息没有这样结束,接收进程将卡在read/2谓词上。
  2. 如果发送方不刷新输出,则消息不会留在管道缓冲区中。这似乎很明显,但一开始并不适合我。
  3. 虽然当消息没有被刷新时read/2是阻塞的,根本不是阻塞的,所以在这种情况下wait_for_input/3不需要。flush_output/1

例子:

这不起作用:

那个也行不通:

虽然这两个,做工作:

现在我的问题是为什么?从管道读取(实际上是从您可能想要读取的任何流中读取)时,Prolog 仅“接受”以句点结尾的整行是否有原因?为什么read阻塞而不阻塞wait_for_input/3(假设消息没有被刷新)?

谢谢!

0 投票
2 回答
25508 浏览

prolog - Prolog:子句不在源文件中

我有这段代码:

我收到此错误:

这个错误的目的是什么?
我的意思是,文件确实编译和运行得很好,我知道错误的含义。但为什么?
这只是执行最佳实践的通知吗?

我对逻辑编程很陌生。
谢谢!

0 投票
3 回答
605 浏览

prolog - 制作适用于 GNU 和 SWI 的 Prolog 代码

我意识到这会有限制,但是有没有一种合理的方法可以在 Prolog 代码中放入条件指令,以便它在 GNU 或 SWI 中合理地工作?sumlist我在考虑至少最简单的情况,即SWI 和GNU中的内置谓词sum_list在拼写上不匹配。或者 SWI 有assert但 GNU 没有。所以最好有类似的东西:

或者简单地说:

或者什么不是。两种语言中都存在条件指令,但似乎没有提供执行此类操作所需的条件。我可能遗漏了一些手动搜索没有出现的东西。

0 投票
3 回答
1599 浏览

prolog - Prolog 谓词参数中实例化模式指示符的含义

查看 Prolog 文档,谓词签名有时编写如下:

什么是:,+和for-以及?我如何解释它们?此外,这些是唯一存在的还是有更多的?

0 投票
3 回答
382 浏览

prolog - 关于 Prolog 语法

有时我会看到以下术语:X = a:b 或 X = ab

正如预期的那样,我可以执行 X = Y:Z 之类的请求,并且编译器将 Y 与 a 和 Z 与 b 统一起来。

现在我的答案是:我可以使用哪些字符(或字符序列)来组合两个 Prolog 原子?!

也许你可以给我一些关于这个问题的更多信息的链接。

感谢您的帮助和来自德国的亲切问候

0 投票
1 回答
1376 浏览

prolog - 为什么我在 Prolog 中的 pi 上收到类型错误?

我正在使用pi作为我正在编写的 Prolog 程序的一部分。这是我pi在整个程序中唯一提到的:

但是,当我运行程序时,出现以下错误:

我在调用/使用方面做错了pi吗?谢谢您的帮助!

0 投票
3 回答
272 浏览

prolog - 爱好 Prolog 解释器应该瞄准的现代流行标准 Prolog 是什么?

我正在编写一个 Prolog 解释器作为练习,并想知道我的目标是什么。不幸的是,有许多版本的 Prolog 可供选择,并且在不同程度上记录了它们。我很快从一个显然对互联网期望过高的人那里找到了这个问题,他想要一份详细的 Prolog html 规范。答案是您可以花 30 美元获得 ISO 标准,但这是相当不切实际的。用户永远不会为了阅读Prolog 而花 30 美元,因为他们可以用更少的钱获得 Prolog 解释器,所以如果你付钱并遵守标准,很少有人会认可你的努力。因此,ISO 标准没有得到普遍尊重一点也不让我感到惊讶。

从 ISO 标准是一个笑话的假设出发,解释器应该瞄准的 Prolog的真实版本是什么?我并不是说每个小的 Prolog 解释器都应该完全实现每个功能,但是在构建 Prolog 解释器时,必须做出的小决定是没有止境的。有人应该如何发现 Prolog 社区关于 Prolog 应该是什么的共识?

0 投票
1 回答
1709 浏览

integer - gprolog 中的最小/最大整数是多少?

gprolog 中的最小/最大整数是多少?有没有办法在不使用“幻数”的情况下引用这些数字?

0 投票
4 回答
2566 浏览

lambda - What is the Prolog operator `^` ("caret")?

What is the Prolog operator ^ ?

Looking at The Prolog Built-in Directive op gives a list of the built-in operators.

I see

  • ** is exponentiation
  • /\ is or

but what is ^ ?

Each of the three current answers are of value and I learned something:

  • Roy for the book
  • false for the examples
  • I accepted the answer by CapelliC because it made clear that ^/2 has multiple meanings
    depending on context which instantly cleared up my confusion.
0 投票
3 回答
1711 浏览

prolog - 为什么 Prolog 运算符定义有 xfx?

对于 Java 和 C 等允许带有运算符的语法糖(即中缀)的语言,它们使用优先级关联性

Prolog 还使用关联性:
左关联 - yfx
右关联 - xfy

但为什么会有 xfx?

我在互联网上发现的唯一更清楚的是

xfx 意味着运算符“支配”其分支,而 xfy 或 yfx 代表“列表构造”,在某种意义上允许链接相同优先级的表达式。

来自:CapelliC的练习中对 Prolog 运算符的解释

如果答案可以包括需要 xfx 的示例,因为 xfy 和 yfx 失败/没有意义,那将不胜感激。

Prolog 参考:Prolog 内置指令操作

作为错误的注释:

请注意,您在上面链接中提供的运算符与标准和 SWI 不同!它们至少已经过时了 10 年。例如,它应该是current_op(200,fy,-).

在阅读CapelliCfalse的两个当前答案后,很明显非关联是查找更多相关信息的关键词。因此,当关注非关联部分时,运算符关联性现在对 xfx 更有意义。