2012-03-23 61 views
1

我已經定義! (階乘)函數,並將其註冊爲算術函數和運算符,以便我可以執行:A是6 !.序言:宣佈運營商

現在我想定義!! (單數的階乘),但是同樣的方法 - 寫入子句,註冊arithmetic_function和operator,調用A是7! - 結果 語法錯誤:運營商預計

我應該如何,如果可能的話,註冊!運營商?

是的,我知道,!通常是削減。

+0

你可以發佈你的謂詞嗎? – 2012-03-23 17:32:57

+0

我不認爲這是一個好主意,定義一個!運算符(既不是!!運算符) – gusbro 2012-03-23 17:50:18

回答

4

!是一個所謂的獨奏字符,你不能有兩個連續。如果不是,你可以不寫,例如:

c :- !. 

而是會必須寫:「」

c :- ! . 

因爲否則會被解釋爲單個標記。

另外,如果你讓!是一個運算符,兩個版本的語法都是無效的(是的,SWI仍然接受它,但是例如GNU Prolog沒有)。你需要寫:

c :- (!). 

因爲操作數是操作數需要加括號。而不是!,例如使用「f」和「ff」,或者爲你的用例安裝Unicode字符。