Prolog - 模式匹配:由运算符链接的复杂表达式

问题描述 投票:1回答:1

我是prolog中的新手,我想知道是否有办法替换部分元素描述如下:

S = ( tab/field = 2 ), (X/Y=V)=S.
S = ( +field > 2 ), (+Y>V)=S.

通过以下示例,我想替换表达式的一部分(X和Y部分)但保留运算符,如下所示:

( replacedValue = 2)
( replacedValue > 2)

谢谢你的帮助

prolog pattern-matching extract operator-keyword
1个回答
1
投票
?- S = (tab/field = 2), display(S), S =.. [Op, L, R], Result =.. [Op, replaced, R].
=(/(tab,field),2)
S =  (tab/field=2),
Op =  (=),
L = tab/field,
R = 2,
Result =  (replaced=2).

?- S = (+field > 2), display(S), S =.. [Op, L, R], Result =.. [Op, replaced, R].
>(+(field),2)
S =  (+field>2),
Op =  (>),
L = +field,
R = 2,
Result =  (replaced>2).
© www.soinside.com 2019 - 2024. All rights reserved.