2015-09-28 110 views
2

我們的課本給了我們一個structurer的這個例子中Prolog的數學公式:如何使用這個Prolog謂詞來獲得結果?想不通輸入

math(Result) --> number(Number1), operator(Operator), number(Number2), { Result = [Number1, Operator, Number2] }. 

operator('+') --> ['+']. 

number('number') --> ['NUMBER']. 

我是很新的Prolog的,但是,我不知道怎麼用這個例子來得到輸出。我也使用重構的Result輸入,輸出它使用的印象。

唯一的輸入我已經試過了不會導致一個錯誤是math('number', '+', 'number').但它總是輸出false,我不知道爲什麼。而且它不應該重組它,並給我結果Result呢?

我應該被輸入在這裏?

回答

2

這個例子是一個DCG。您應該使用接口謂詞phrase/2來訪問DCG。

要找出什麼DCG介紹,從最一般的查詢,涉及非終結math(R)到由第一個參數描述的列表Ls

?- phrase(math(R), Ls). 

從回答你(很容易運動吧!),你會發現,R可能不是你的意思它是。提示:查詢(=..)/2

請特別注意,您不需要在此輸入任何內容:DCG 描述了列表。該列表可以指定,但不必給出:變量會做呢!用任意術語之間的關係來思考。