免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
10.2 LISP語言
10.2 LISP語言

  LISP是最早和最重要的符號處理編程語言之一,它于1958年由美國的J. McCarthy提出,并于1960年發(fā)表了他的第一篇關于LISP的論文。之后,LISP很快受到人工智能工作者的歡迎,獲得廣泛應用。LISP是LISt Processing(表處理)的縮寫。
10.2.1 LISP的特點和數(shù)據(jù)結構  
  1.LISP語言具有下列特點:

  (1)主要數(shù)據(jù)結構是表(符號表達式),而不是作為算術運算對象的數(shù)。
  (2)特性表簡單,便于進行表處理。
  (3)最主要的控制結構為遞歸,適于過程描述和問題求解。
  (4)LISP程序內(nèi)外一致,全部數(shù)據(jù)均以表形式表示。
  (5)能夠產(chǎn)生更復雜的函數(shù)和解釋程序。
  (6)對大多數(shù)事物的約束發(fā)生在盡可能晚的時刻。
  (7)數(shù)據(jù)和過程都可以表示成表使得程序可能構成一個過程并執(zhí)行這個過程。
  (8)大多數(shù)LISP系統(tǒng)可以交互方式運行,便于開發(fā)各類程序,包括交互程序。

  2.數(shù)據(jù)結構
  在基本LISP中,僅有一種數(shù)據(jù)類型,即表結構。大多數(shù)LISP程序設計中,數(shù)據(jù)是以表或者原子為專門形式。
  原子:原子是LISP中最小的符號單位。原子有標識符,諸如I AM A STUDENT,3,XYZ,或者NIL等。它們沒有組合部分,各種性質(zhì)或?qū)傩钥筛郊拥絾蝹€原子上。
  一個原子最重要的屬性除其名字外是值,這與變量有值同義。一些原子有標準值:原子NIL的值是NIL,T的值是T。任何數(shù)字原子,其相應的整數(shù)或浮點數(shù)是它的值。這里要注意,原子不是"類型",任何原子,除常數(shù)外,可以給予任意值。
  表:一個表遞歸地定義為括號內(nèi)零個或n個元素的序列:
(元素1 … 元素n)
其中每一個元素是一個原子或是一個表。零或者空表寫成(),或者NIL。NIL既是原子又是表。表的固有遞歸結構非常靈活,便于表示各種信號。
  例如:
  (4 6 7 9 14 17 20 24 76)一組數(shù)
  ((-B)+(SQRT((B*B)-(4*A*C))))代數(shù)表達式
  (I(know((that(gasoline can))explode)))語法分析句子
  (YELLOW TABLE)斷言
  (AND(ON A B)(ON A C)(NOT(TOUCH B C)))合取子句
  表的數(shù)據(jù)結構:LISP表的內(nèi)部表示是由稱為CONS單元的基元構成。每個CONS單元是一個地址,它包括一對指針,每個指針指到一個原子,或者指到另一個CONS單元。
  LISP的表結構可以用來使任何數(shù)據(jù)結構模型化。例如,二維數(shù)組可以表示為由許多行組成的一張表,每行又是一張元素表。當然,對于許多目的,這種數(shù)組的實現(xiàn)是相當?shù)托У摹?br>  控制結構:LISP是函數(shù)式程序語言,LISP的控制結構主要是應用函數(shù)指導控制流,其中變元又可以是應用函數(shù)。這點與大多數(shù)程序設計語言的順序控制結構不同,在那里分離的句子是一句接一句地執(zhí)行。在LISP中,語句與表達式?jīng)]有區(qū)別,過程與函數(shù)也沒有區(qū)別。每個函數(shù),不管是否是一個語言原語,或是由用戶定義的,都以指向一個表結構的形式返回一個單值。
  3.變量約束及其轄域
  在LISP中有3種主要的賦予符號含義的方法。這里我們將介紹其中最常用的2種:把變量約束到值上和建立函數(shù)。
  變量約束到值上:變量本身并無什么含義,它只是一個符號。通過這個符號可以"達到"這個值。變量本身只不過是具有當前值的原子名稱而已。當把此名稱輸入到LISP去時,LISP通過告訴原子的當前值,作為回答。這個名稱與原子當前具有的值之間的聯(lián)系稱為約束,例如可把x約束到5。每當您在程序中引用x時,LISP都理解為5。以后您可以重新把x約束到pen,這就破壞了原來的聯(lián)系而代之以x和pen之間的聯(lián)系,在這以后,當引用x時,LISP把它理解為pen。x值還可能是一般復雜數(shù)據(jù)。可以自由地用任意數(shù)據(jù)段約束任何一個任意選擇的符號。在最簡單的情況下,變量就是某個對象的名字,變量的值就是對象本身。因此,我們可以發(fā)明一些名詞寫入到程序中去,并對這些名詞賦予含義。我們還可以改變這些含義。
  建立函數(shù):我們希望能夠建立函數(shù),以對名詞進行運算,產(chǎn)生新的名詞。建立函數(shù)的方法與用值約束符號的方法相同。不過,這時的值不是事實,而是要做的事情。在完成這些之后,再把符號正確地輸入到LISP中去,LISP不象以前那樣理解對象,而是把對象理解為需要完成的某件事。當把有關的符號約束到"含義"上時,就規(guī)定了這件事。

  轄域:如前所述,當一個值約束一個變量時,約束一直有效,直到使用者改變它為止。當約束來自最高層即來自鍵盤時,這總是對的。來自函數(shù)內(nèi)部所建立的約束可以是永久性的,但當函數(shù)完成時,這些約束往往就消失,變量的名字將成為無約束的。如果在整個程序執(zhí)行過程中始終保持變量的約束,那么變量被認為是全程變量。如果變量的約束是建立在單個函數(shù)的內(nèi)部,而且當函數(shù)約束時,約束就消失,那么這是該函數(shù)的局部變量。當然,這二者之間有各種狀態(tài):你可能希望在程序的某一點被賦值的變量在執(zhí)行若干個子程序的過程中保持它的值,然后再失掉這些值。
  值得指出,如果局部變量已能解決問題,就不需要建立全程變量。不然的話,就會浪費計算機內(nèi)存。

本站僅提供存儲服務,所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Common LISP Hints
Lisp 已死,Lisp 萬歲!
關于語言的思考
現(xiàn)實世界的LISP:Clojure語言初探
歷語言是怎么來的–LISP 和 AI 的青梅竹馬_徐宥
高級編程語言的發(fā)展歷程
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服