免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版
打開APP
未登錄
開通VIP,暢享免費電子書等14項超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
10.2 LISP語言
jollyme
>《我的圖書館》
2005.10.09
關注
10.2 LISP語言
L
I
S
P
語
言
10.2.1 LISP的特點和數(shù)據(jù)結構
10.2.2 LISP的基本函數(shù)
10.2.3 遞歸和迭代
1.遞歸
2.遞歸和迭代
10.2.4 LISP編程舉例
1.梵塔問題的描述
2.問題求解步驟
3.定義函數(shù)
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ā)展歷程
更多類似文章 >>
生活服務
首頁
萬象
文化
人生
生活
健康
教育
職場
理財
娛樂
藝術
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點擊這里,查看已保存的文章
導長圖
關注
一鍵復制
下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請勿關閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×