1
一個具體的說法如果我有這樣的查找Prolog的謂詞
some_predicate('12','Jon Doe', 'Unknown town').
謂語是有可能得到例如第三參數呢?我正在考慮一個可以這樣寫的規則nth_arg(+Predicate,+Nth,-Argument)
。
這種規則是否存在?
一個具體的說法如果我有這樣的查找Prolog的謂詞
some_predicate('12','Jon Doe', 'Unknown town').
謂語是有可能得到例如第三參數呢?我正在考慮一個可以這樣寫的規則nth_arg(+Predicate,+Nth,-Argument)
。
這種規則是否存在?
有一個ISO謂詞,arg/3
,但這正是是:
?- arg(2, foo(a,b,c), Arg).
Arg = b
yes
| ?-
用於第二參數的正確術語是化合物術語(帶有參數的術語)。 A 謂詞是':-'(head, body)
形式的特定術語,或者僅僅是頭部,其定義了規則。並非所有條款都定義規則。有時他們只是數據結構。
可以,例如,得到一個謂語的整個身體如下:
?- arg(2, (foo(X,Y) :- X > 1, Y is X * 3), Body).
Body = (X>1,Y is X*3)
yes
| ?-
這是因爲在給定的謂詞術語::-(foo(X,Y), (X > 1, Y is X*3))
。
這正是我所期待的,非常感謝! – tomatediabolik
你會給'+謂語'? 'some_predicate'或'some_predicate(12,'John Doe','不知名的城鎮')''。 –