在這之前我們只涉及了Prolog法式中簡單的數據形式 , 這種數據只有一項 , 是以長短布局的 , 然而有需要將對象或整匯集到一路 。 在這篇經驗中 , 我將介紹它的布局和表的特征 。
2Prolog的根基概念和語律例則
2SWI-Prolog的遞歸

需要這些哦
SWI-Prolog
電腦
布局1Prolog供給了一種在謂詞中成立布局的方式 , 即許可謂詞的變元具有變元 , 從而達到使謂詞變元具有布局的目標 。 用這種方式可以使謂詞中具有的信息反映實際糊口中數據的現實關系 。 例如 , 考慮下面簡單事實:
吉恩的頭發是紅色的 。
顯然 , 這個事其實Prolog中可以暗示為:
has(jean, red_hair).
還有其他一系列關于人以及他們的頭發、眼睛顏色和其它表征他們屬性的事實 , 常識庫可能如圖所示 。

2此刻若是籌算扣問常識庫中每小我的頭發顏色 , 我們不得不如許提問:
?- has(X,Y).
并不竭在提醒符“?”后鍵入“;” , 迫使回溯 。 會話過程如圖所示 。
正如讀者所看到的 , 如許將導致年夜量不需要的信息輸出 。 這是因為數據長短布局化的 , 因而無法較為明白地扣問 。

3一種很是有效的 , 可切當地表達上述事實信息的方式如下:
has(jean, hair(red)).

4此刻為了領會常識庫里每小我頭發的顏色 , 我們可以簡單地提出扣問:
?- has(X, hair(Y)).
然后再要求Prolog在每個回覆之后進行回溯 , 會話過程如圖所示 。
這些信息不多不少恰是我們想要的 。

表的根基概念1表是根基的數據布局 , 很多適用的Prolog法式都是成立在表的根本之上的 , 表是很多元素的簡單調集 。 好比:
[red, yellow, green]
[1, 5, 68]
沒有元素的表叫作空表 , 暗示為:
[ ]
下圖是一行列表的代碼 。

2表頭和表從頭至尾的概念是理解Prolog中表處置的根本 。 表頭是一個元素 , 而表從頭至尾自己是一個表 。 表具有遞歸的數據布局 , 因為它是由表頭和另一個表(表從頭至尾)構成的 。 正像其遞歸布局那樣 , 表也可以遞歸界說 。 好比:
考慮到[a, b, c] , 該表表頭=a , 表從頭至尾=[b, c];表從頭至尾也是一個表 , 表頭 = b , 表從頭至尾=[c];而表從頭至尾[c] , 也是一個表 , 表頭=c , 表從頭至尾=[ ] 。
因為[ ]是個空表 , 所以遞歸過程到此為止 。 空表可視為遏制前提 。
若用H暗示表頭 , T暗示表從頭至尾 , 則表記作:
[H|T]
此中豎線“|”是Prolog頂用于分隔表頭和表從頭至尾的符號 。
猜你喜歡
- Word如何為每一頁添加不同的頁眉
- 星期一到星期日的英文 星期一到星期日的英文是什么
- 移動網上營業廳的電子發票如何下載
- 英語世界動物日手抄報 世界動物日的手抄報怎么畫
- printf語句控制輸出數值的寬度和小數點后位數
- 葉落歸根的意思 葉落歸根的出處
- WIN10自帶計算器如何計算a的多少次方等于b
- autocad P3D如何設置修改一條直線的終點坐標
- 不惜歌者苦但傷知音惜的意思 不惜歌者苦但傷知音稀什么意思
- 人故有一死或重于泰山或輕于鴻毛的固是什么意思 人故有一死或重于泰山或輕于鴻毛的意思
