gpt4 book ai didi

prolog - 什么是冒号(:) exactly stand for in Swi-Prolog?

转载 作者:行者123 更新时间:2023-12-04 14:47:38 26 4
gpt4 key购买 nike

我在 prolog 中找不到明确的 (:) 代表什么.
在交互模式下,您可以看到以下证据:

?- display(a:b).
:(a,b)
true.

?- display([a,b,c]).
.(a,.(b,.(c,[])))
true.

?- display(a:b:c:[]).
:(a,:(b,:(c,[])))
true.

?- a:b:REST = a:TAIL.
TAIL = b:REST.

引入 (:) 的目的是什么? 我在www中找不到任何详细信息。
似乎它提供了另一种将递归结构称为列表的语法方式。

我们可以说它是Right-associative,它的优先级数是多少?
:-op(??, xfy, :).

有没有办法列出所有此类隐式仿函数?
listing(op). %of course this does not work

最佳答案

那是 module限定符,你可以看到它的声明:

?- current_op(X,Y,:).
X = 600,
Y = xfy.

模块是 Prolog 的一个重要扩展,尤其是大型程序所需要的,但未符合 ISO 标准。 SWI-Prolog(通常)对此有务实的观点,并实现了一种有用的方法。

加类 检查运算符,您会发现此代码段很有用:
oplist :-
setof((A,C,B), current_op(A,B,C), L),
maplist(writeln, L).

关于prolog - 什么是冒号(:) exactly stand for in Swi-Prolog?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12759700/

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