prolog:内置或其他方法,用于使用类似于返回值的函数

prolog:内置或其他方法,用于使用类似于返回值的函数,prolog,logic,gnu,Prolog,Logic,Gnu,如果可能的话,我尝试让Prolog将变量实例化为公钥/私钥对的相反密钥 所以我基本上有: publicKey(k_c). privateKey(k_c-1). keyPair(k_c,k_c-1). 鉴于Prolog的性质,我认为您无法管理类似的内容 inverseOf(X) :- (keyPair(X,Y), return(Y),!);(keyPair(Y,X),return(Y),!). Init_3 == inverseOf(Init_2). 我为什么想要/需要这个 我有个规矩 i

如果可能的话,我尝试让Prolog将变量实例化为公钥/私钥对的相反密钥

所以我基本上有:

publicKey(k_c).
privateKey(k_c-1).

keyPair(k_c,k_c-1).
鉴于Prolog的性质,我认为您无法管理类似的内容

inverseOf(X) :-
(keyPair(X,Y), return(Y),!);(keyPair(Y,X),return(Y),!).
Init_3 == inverseOf(Init_2).
我为什么想要/需要这个

我有个规矩

init(Init_1, Init_2,Init_3)
我想检查一下

inverseOf(X) :-
(keyPair(X,Y), return(Y),!);(keyPair(Y,X),return(Y),!).
Init_3 == inverseOf(Init_2).
有什么想法吗?

定义

inverseOf(X, Y):- keyPair(X,Y), !.
inverseOf(X, Y):- keyPair(Y,X), !.
然后使用

inverseOf(Init_2, Init_3).
定义

然后使用

inverseOf(Init_2, Init_3).

定义如下:

keypair(pub1, priv1).
keypair(pub2, priv2).
keypair(pub3, priv3).

keymatch(A, B) :- keypair(A, B).
keymatch(A, B) :- keypair(B, A).
你可以问这样的问题:

keymatch(pub1, X).
keymatch(priv2, X).
keymatch(priv3, pub3).

旁白

Prolog没有函数;你不能在Prolog中说类似于
Y=f(X)
的话(实际上你可以,但如果你来自C/Java/Python/etc的背景,它并不能达到你所期望的效果)

要在Prolog中实现
Y=f(X)
的功能,可以执行以下操作

f(X,Y):-Y是X+1。

然后像这样调用它

f(3,Y)。


Y将计算为值4。

定义如下:

keypair(pub1, priv1).
keypair(pub2, priv2).
keypair(pub3, priv3).

keymatch(A, B) :- keypair(A, B).
keymatch(A, B) :- keypair(B, A).
你可以问这样的问题:

keymatch(pub1, X).
keymatch(priv2, X).
keymatch(priv3, pub3).

旁白

Prolog没有函数;您不能在Prolog中说类似于
Y=f(X)
的话(实际上您可以,但如果您来自C/Java/Python/etc背景,它并没有达到您所期望的效果)

要在Prolog中实现
Y=f(X)
的功能,可以执行以下操作

f(X,Y):-Y是X+1。

然后像这样调用它

f(3,Y)。


Y的值为4。

谢谢,我之所以忽略森林,似乎是因为那些树。谢谢,我之所以忽略森林,似乎是因为那些树。