Learn Prolog Now!第一章,第二節 Prolog 語法

1.2 Prolog 語法

我們已經有些瞭解Prolog了,是時候回頭重新仔細的考慮一下細節問題了。讓我們從一個很基礎的問題開始:我們在prolog程序裏見到了各種各種表達方式(比如 jody , playsAirGuitar(mia) , X ) ,那麼這些 事實,規則,查詢 到底是由聲明構建的呢?

答案就是元素(原文爲term,沒有找到術語翻譯,覺得元素比較符合文意),Prolog裏有四種元素:原子(atom),數字,變量 和複雜元素(或稱結構)。原子和數字都稱爲常量,常量和變量都算是簡單元素。

現在來確定一下什麼最基本的字符:大寫字母 A 到 Z,小寫字母a 到 z,數字 0 到 9,還有下劃線“_”以及“+, - , * , / , < , > , = , : , . , & , ~”,最後一個是空格,雖然看不見它。字符串就是指一串連續的字符。

原子

  • 是字符串。並且是由小寫字母開頭,由大寫字母 或小寫字母 或數字 或下劃線的字符串。比如:butch ,big_kahuna_burger , listens2Music and playsAirGuitar 。
  • 是由單引號括起來的,任意字符串,比如: ’ Vincent ’, ’ The Gimp ’, ’ Five_Dollar_Shake ’, ’&^%&#@$ &* ’, ’ ’。被括住的字符串被稱爲該原子的原子名。注意,空格加上單引號也可以作爲原子。
  • 是特殊字符,比如:@=和====>和;還有:-。原因都應該知道。

數字

實數在典型的prolog程序裏並不是很重要。雖然大部分prolog版本支持浮點型數,本書也不會講。

但整數( …,-2, -1, 0, 1, 2, 3,… )在一些如統計列表元素個數的工作上很有用,我們會在第五章討論。

變量

變量是由大寫字母或下劃線開頭,由大寫字母 或小寫字母 或數字 或下劃線的字符串。比如:X , Y , Variable , _tag , X_526 ,List , List24 , _head , Tail , _input ,Output。

但是變量 "_" (單個下劃線字符)比較特殊,被稱爲匿名變量,我們會在第四章詳談。

複雜元素

複雜元素基本上就和一般的函數一樣——函數名(參數1,參數2,參數3)。注意,函數名必須是一個原子,不能是變量。參數類型隨意。比如:playsAirGuitar(jody) ,loves(vincent,mia) ,jealous(marsellus,W) 。

複雜元素可以用嵌套或者遞歸組成更復雜的元素,比如:hide(X,father(father(father(butch)))) 。

如我們所見,嵌套遞歸元素讓我們能夠更加自然的描述問題,而它們也正是prolog的力量之源。

參數的數量很重要,因爲有同一個函數名但有不同參數個數的兩個複雜元素,prolog認爲它們是不同的。也就是說prolog 認爲 love(vincent,mia) 和 love(vincent,marsellus,mia) 有不同的謂詞,但是 love(vincent,mia) 與 love(marsellus,mia) 有相同的謂詞。(我們會在第五章詳談,也會發現這個機制是很有用的。)

爲此,我們會在謂詞後面加上斜槓和參數個數來表示不同的謂詞,比如:

   listens2Music/1 
   happy/1 
   playsAirGuitar/1
   love/2
   love/3
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章