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
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