Picat 中的“=>”符号定义

"=>" symbol definition in Picat

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中方法声明后的“{”,还是具有更深层次的含义?

简而言之,如果您使用 => 而不是 :-,您实际上是在编写一个确定性谓词。正如我们所知,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