3

次のようなリストがあるとしましょう。

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

そして、私が遭遇する可能性のあるすべてのタイプに対して1つのヘルプ述語を作成する代わりに、それを使用して何かを実行します。

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

これを回避する方法はありますか、それとも大量のヘルプ述語を使用する運命にありますか?

4

1 に答える 1

4

univ述語を使用できます=../2:Try=alpha(1,2)

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

Name = alpha、X = 1、Y = 2 になります。

于 2012-10-18T16:10:44.337 に答える