gpt4 book ai didi

prolog - Prolog 句子可以有歧义吗?

转载 作者:行者123 更新时间:2023-12-04 04:39:34 24 4
gpt4 key购买 nike

Prolog 句子是否有可能模棱两可,你能给我举个例子吗?

我知道解析器可能会产生歧义,它们可以生成两个不同的解析树......

最佳答案

不,Prolog 形式上没有歧义,但它提供了一个句法特征,可能导致程序难以理解,即 op/3 声明。正如您在文档中所读到的

Applications must be careful with (re-)defining operators because changing operators may cause (other) files to be interpreted differently.



这就像类固醇上的 C++ 运算符重载,以及定义新运算符(或重新定义系统已知的一些运算符)的能力,在对 DSL(域特定语言)进行编程时非常有值(value)。参见例如 library( clpfd ) 或 lambda .

与历史相关的是点运算符。它的主要用途是作为子句终止符,但较旧的 Prolog 将其用作“list cons”。 Here是我对这个话题的回答。注意初始声明
:- op(103, xfy, (.)).

允许紧凑的定义(例如)
seek_call(A.As, _.Ms, B.As, V) :-
nonvar(A),
A =.. F.FAs,
seek_call(FAs, Ms, FBs, V),
!, B =.. F.FBs.

它相当于
seek_call([A|As], [_|Ms], [B|As], V) :-
nonvar(A),
A =.. [F|FAs],
seek_call(FAs, Ms, FBs, V),
!, B =.. [F|FBs].

关于prolog - Prolog 句子可以有歧义吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19124383/

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