在Picat中,符号"=>“的定义是什么?你是如何解读的?这意味着什么吗?我很难理解它,因为手册和书中似乎都没有关于它的信息。
%example using "=>"
main =>
A = true,
B = true,
C = function(A,B),
predicate(A,B).
function(true,true) = R => R = true.
predicate(true,true) => true.在前面的例子中,您将如何描述"=>“的含义?这只是语法上需要的东西,比如Java中的方法声明后的"{“,还是有更深层次的含义?
发布于 2022-03-07 18:16:54
简单地说,如果使用=>而不是:-,本质上是在编写确定性谓词。正如我们所知道的,Prolog是一种实用的编程语言,不需要保持所有谓词的纯正性。很多时候,我们实际上用cut编写了一些不纯的程序,希望能做到片面的统一。=>只是为编写这样的程序提供了一个方便的机制。
您可以通过程序转换来理解=>。
p(A1,A2,...An), C1, C2, ... => Body在语义上等同于
p(V1,V2,...Vn) :-
Pattern = p(A1,A2,...An),
Args = p(V1,V2,...Vn),
subsumes_term(Pattern, Args),
Pattern = Args,
C1, C2, ...,
!,
Body.更多细节见https://swi-prolog.discourse.group/t/picat-style-matching
https://stackoverflow.com/questions/71383992
复制相似问题