簡體   English   中英

Prolog:存儲操作結果

[英]Prolog: Storing result of an operation

剛開始使用 prolog 進行編程,我遇到了一些問題。 我想將結果存儲在操作中,例如:

transformer(kilo,1000).
transformer(hecto,100).
transformer(deca,10).
transformer(unite,1).
transformer(deci,0.1).
transformer(centi,0.01).
transformer(milli,0.001).
transformerT(sec,1).
transformerT(min,60).
transformerT(h,3600).

plus(V1,U,V2,U,UniteType,R,U) :-
  dif(UniteType,temps),R is V1+V2. 
plus(V1,U1,V2,U2,UniteType,R,unite) :-   
  dif(UniteType,temps), 
  dif(U1,U2),  
  trans(U1,Res1),  
  trans(U2,Res2),  
  R is V1*Res1+V2*Res2.

我想存儲此操作的結果以便稍后在另一個操作中調用它(就像計算器中的 ANS 或 M 按鈕)。 可能嗎?

如果您希望信息在程序終止后仍然存在(即返回到 Prolog REPL,又名 toplevel),您可以使用謂詞 asserta/2 和 assertz/2。

SWI Prolog 見本節,SICStus 應該類似:數據庫

或者,您可能希望使程序保持“活動狀態”並將信息存儲在謂詞之間傳遞的術語中。 關聯列表library(assoc)或者,對於 SWI Prolog,可以使用內置的dicts或更簡單的數據結構,如列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM