gpt4 book ai didi

prolog - Prolog 中的模式匹配类型

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

假设我有一个如下所示的列表:

List=[alpha(1,2),beta(3,4),gamma(4,1)]

好的,所以我想在这里进行某种模式匹配......我知道我可以做到:

Try=alpha(Y,Z).
Try=alpha(1,2)
Y=1
Z=2

但我想做的例子:

Try=X(Y,Z)
X=alpha
Y=1
Z=2

...这样我就可以将数据传递给另一个谓词:

targetPredicate(Type,Value1,Value2):-
Type=alpha
...

然后用它做一些事情,而不必为我可能遇到的每一种类型都创建一个帮助谓词:

helpPredicate(Input):-
Input=alpha(Value1, Value2),
targetPredicateAlt(Value1, Value2).

helpPredicate(Input):-
Input=beta(Value1, Value2),
targetPredicateAlt(Value1, Value2).

helpPredicate(Input):-
Input=gamma(Value1, Value2),
targetPredicateAlt(Value1, Value2).

有什么办法可以解决这个问题,还是我注定要使用大量帮助谓词?

最佳答案

您可以使用 univ谓词 =../2:假设你有 Try=alpha(1,2),那么

Try =..[Name, X, Y].

会产生 Name = alpha, X = 1, Y = 2。

关于prolog - Prolog 中的模式匹配类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12958897/

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