簡體   English   中英

兩組Prolog規則之間的差異

[英]Difference between two set of prolog rules

一般而言,我對序言和邏輯編程還是陌生的。 誰能告訴我這兩組序言規則之間的區別?

  1. number_of_parents(adam,0):-!
    number_of_parents(eve,0):-!。
    number_of_parents(X,2)。

  2. number_of_parents2(adam,N):-!, N = 0。
    number_of_parents2(eve,N):-!, N = 0。
    number_of_parents2(X,2)。

對我來說,它們幾乎代表了同一組邏輯。 但是,如果我調用“ number_of_parents(eve,2)”,為什么它返回“ yes”? 我對此進行了跟蹤,但是仍然很難解決。 逐步解釋是非常值得贊賞的。 謝謝。

讓我們來談談Prolog:

9 ?- [stackoverflow].
Warning: /home/carlo/prolog/stackoverflow.pl:8:
    Singleton variables: [X]
Warning: /home/carlo/prolog/stackoverflow.pl:12:
    Singleton variables: [X]
% stackoverflow compiled into stackoverflow 0.01 sec, 4 clauses
true.

10 ?- leash(-all),trace.
true.

[trace] 11 ?- number_of_parents(eve,2).
   Call: (6) stackoverflow:number_of_parents(eve, 2)
   Exit: (6) stackoverflow:number_of_parents(eve, 2)
true.

[trace] 12 ?- number_of_parents2(eve,2).
   Call: (6) stackoverflow:number_of_parents2(eve, 2)
   Call: (7) 2=0
   Fail: (7) 2=0
   Fail: (6) stackoverflow:number_of_parents2(eve, 2)
false.

顯然,第一組的第三條規則是(錯誤地)參與的,而在第二組中,身份是正確表示的。

順便說一句好代碼...

暫無
暫無

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

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