久久精品水蜜桃av综合天堂,久久精品丝袜高跟鞋,精品国产肉丝袜久久,国产一区二区三区色噜噜,黑人video粗暴亚裔

LISP

來自站長百科
淡淡伊討論 | 貢獻(xiàn)2012年5月7日 (一) 11:50的版本 →?參考來源
(差異) ←上一版本 | 最后版本 (差異) | 下一版本→ (差異)
跳轉(zhuǎn)至: 導(dǎo)航、? 搜索

LISP語言(全名LISt Processor,即鏈表處理語言),由約翰·麥卡錫在1960年左右創(chuàng)造的一種基于λ演算的函數(shù)式編程語言。

簡介[ ]

LISP有很多種方言,各個(gè)實(shí)現(xiàn)中的語言不完全一樣。各種LISP方言的長處在于操作符號性的數(shù)據(jù)和復(fù)雜的數(shù)據(jù)結(jié)構(gòu)。1980年代Guy L. Steele編寫了Common Lisp試圖進(jìn)行標(biāo)準(zhǔn)化,這個(gè)標(biāo)準(zhǔn)被大多數(shù)解釋器和編譯器所接受。在Unix/Linux系統(tǒng)中,還有一種和Emacs一起的Emacs Lisp(Emacs的拓展語言便是Lisp)非常流行,并建立了自己的標(biāo)準(zhǔn)。

LISP的祖先是1950年代Carnegie-Mellon大學(xué)的Newell、Shaw、Simon開發(fā)的IPL語言。

LISP語言的主要現(xiàn)代版本包括Common Lisp和Scheme。

lisp擁有理論上最高的運(yùn)算能力。

lisp在cad繪圖軟件上的應(yīng)用非常廣泛,普通用戶均可以用lisp編寫出各種定制的繪圖命令

名址分離網(wǎng)絡(luò)協(xié)議[ ]

注意:LISP在近幾年也指一種名址分離網(wǎng)絡(luò)協(xié)議,即 Location-ID Separation Protocol。

在Internet的不斷發(fā)展和壯大的同時(shí),也呈現(xiàn)出了更多的弊端以及面臨著諸多方面的挑戰(zhàn),包括全局路由表的持續(xù)不斷的增長、缺乏對multi-homing和業(yè)務(wù)量工程以及移動(dòng)性和安全性很好的支持等多方面的因素。

為了徹底地解決上述問題,眾多研究者都提到名址分離這一想法,如LISP\HIP等。在LISP中,原有的網(wǎng)絡(luò)IP地址被分成EID(end-identifier)和RLOC(routing locator)。其中,EID用于標(biāo)志主機(jī),不具備全局路由功能;RLOC用于全網(wǎng)路由。名址分離網(wǎng)絡(luò)自然會引入名與址的映射,即LISP中EID-to-RLOC的映射。眾所周知,分級結(jié)構(gòu)有著非常明顯的優(yōu)點(diǎn),如結(jié)構(gòu)簡單、查詢效率高等;已有方案中HRA、HAIR、RANGI、HiiMap、Lisp_CONS都提到采用分級結(jié)構(gòu)進(jìn)行映射系統(tǒng)的設(shè)計(jì)。

基本介紹[ ]

Lisp的表達(dá)式是一個(gè)原子(atom)或表(list),原子(atom)是一個(gè)字母序列,如abc;表是由零個(gè)或多個(gè)表達(dá)式組成的序列,表達(dá)式之間用空格分隔開,放入一對括號中,如:

abc

()

(abc xyz)

(a b (c) d)

最后一個(gè)表是由四個(gè)元素構(gòu)成的,其中第三個(gè)元素本身也是一個(gè)表。

正如算數(shù)表達(dá)式1+1有值2一樣,Lisp中的表達(dá)式也有值,如果表達(dá)式e得出值v,我們說e返回v。如果一個(gè)表達(dá)式是一個(gè)表,那么我們把表中的第一個(gè)元素叫做操作符,其余的元素叫做自變量。

Lisp的7個(gè)公理(基本操作符):

公理一

(quote x)返回x,我們簡記為'x

公理二

(atom x)當(dāng)x是一個(gè)原子或者空表時(shí)返回原子t,否則返回空表()。在Lisp中我們習(xí)慣用原子t表示真,而用空表()表示假。

> (atom 'a)

t 

> (atom '(a b c))

()

>

(atom '())

t


現(xiàn)在我們有了第一個(gè)需要求出自變量值的操作符,讓我們來看看quote操作符的作用——通過引用(quote)一個(gè)表,我們避免它被求值。一個(gè)未被引用的表達(dá)式作為自變量,atom將其視為代碼,例如:

> (atom (atom 'a))

t

反之一個(gè)被引用的表僅僅被視為表

> (atom '(atom 'a))

()

引用看上去有些奇怪,因?yàn)槟愫茈y在其它語言中找到類似的概念,但正是這一特征構(gòu)成了Lisp最為與眾不同的特點(diǎn)——代碼和數(shù)據(jù)使用相同的結(jié)構(gòu)來表示,而我們用quote來區(qū)分它們。

公理三


(eq x y)當(dāng)x和y的值相同或者同為空表時(shí)返回t,否則返回空表()

> (eq 'a 'a)

t

>

(eq 'a 'b)

()

>

(eq '() '())

t 

公理四


(car x)要求x是一個(gè)表,它返回x中的第一個(gè)元素,例如:

>

(car '(a b))

a 

公理五


(cdr x)同樣要求x是一個(gè)表,它返回x中除第一個(gè)元素之外的所有元素組成的表,例如:

>

(cdr '(a b c))

(b c)

公理六


(cons x y)要求y是一個(gè)表,它返回一個(gè)表,這個(gè)表的第一個(gè)元素是x,其后是y中的所有元素,例如:

>

(cons 'a '(b c))

(a b c)

>

(cons 'a (cons 'b (cons 'c ())))

(a b c)

公理七


條件分支,在Lisp中,它是由cond操作符完成的,cond是七個(gè)公理中最后一個(gè)也是形式最復(fù)雜的一個(gè)(歐幾里德的最后一個(gè)公理也如是):

(cond (p1e1) (p2e2)...(pnen))

p1到pn為條件,e1到en為結(jié)果,cond操作符依次對p1到pn求值,直到找到第一個(gè)值為原子t(還記得嗎?)的p,此時(shí)把對應(yīng)的e作為整個(gè)表達(dá)式的值返回,例如:

>

(cond ((eq 'a 'b) 'first)

((atom 'a) 'second))

second

相關(guān)條目[ ]


參考來源[ ]