WIKI使用導航
站長百科導航
站長專題
- 網(wǎng)站推廣
- 網(wǎng)站程序
- 網(wǎng)站賺錢
- 虛擬主機
- cPanel
- 網(wǎng)址導航專題
- 云計算
- 微博營銷
- 虛擬主機管理系統(tǒng)
- 開放平臺
- WIKI程序與應用
- 美國十大主機
LISP
LISP語言(全名LISt Processor,即鏈表處理語言),由約翰·麥卡錫在1960年左右創(chuàng)造的一種基于λ演算的函數(shù)式編程語言。
簡介[ ]
LISP有很多種方言,各個實現(xiàn)中的語言不完全一樣。各種LISP方言的長處在于操作符號性的數(shù)據(jù)和復雜的數(shù)據(jù)結構。1980年代Guy L. Steele編寫了Common Lisp試圖進行標準化,這個標準被大多數(shù)解釋器和編譯器所接受。在Unix/Linux系統(tǒng)中,還有一種和Emacs一起的Emacs Lisp(Emacs的拓展語言便是Lisp)非常流行,并建立了自己的標準。
LISP的祖先是1950年代Carnegie-Mellon大學的Newell、Shaw、Simon開發(fā)的IPL語言。
LISP語言的主要現(xiàn)代版本包括Common Lisp和Scheme。
lisp擁有理論上最高的運算能力。
lisp在cad繪圖軟件上的應用非常廣泛,普通用戶均可以用lisp編寫出各種定制的繪圖命令
名址分離網(wǎng)絡協(xié)議[ ]
注意:LISP在近幾年也指一種名址分離網(wǎng)絡協(xié)議,即 Location-ID Separation Protocol。
在Internet的不斷發(fā)展和壯大的同時,也呈現(xiàn)出了更多的弊端以及面臨著諸多方面的挑戰(zhàn),包括全局路由表的持續(xù)不斷的增長、缺乏對multi-homing和業(yè)務量工程以及移動性和安全性很好的支持等多方面的因素。
為了徹底地解決上述問題,眾多研究者都提到名址分離這一想法,如LISP\HIP等。在LISP中,原有的網(wǎng)絡IP地址被分成EID(end-identifier)和RLOC(routing locator)。其中,EID用于標志主機,不具備全局路由功能;RLOC用于全網(wǎng)路由。名址分離網(wǎng)絡自然會引入名與址的映射,即LISP中EID-to-RLOC的映射。眾所周知,分級結構有著非常明顯的優(yōu)點,如結構簡單、查詢效率高等;已有方案中HRA、HAIR、RANGI、HiiMap、Lisp_CONS都提到采用分級結構進行映射系統(tǒng)的設計。
基本介紹[ ]
Lisp的表達式是一個原子(atom)或表(list),原子(atom)是一個字母序列,如abc;表是由零個或多個表達式組成的序列,表達式之間用空格分隔開,放入一對括號中,如:
abc () (abc xyz) (a b (c) d)
最后一個表是由四個元素構成的,其中第三個元素本身也是一個表。
正如算數(shù)表達式1+1有值2一樣,Lisp中的表達式也有值,如果表達式e得出值v,我們說e返回v。如果一個表達式是一個表,那么我們把表中的第一個元素叫做操作符,其余的元素叫做自變量。
Lisp的7個公理(基本操作符):
公理一:
(quote x)返回x,我們簡記為'x
公理二:
(atom x)當x是一個原子或者空表時返回原子t,否則返回空表()。在Lisp中我們習慣用原子t表示真,而用空表()表示假。 > (atom 'a) t > (atom '(a b c)) () > (atom '()) t
現(xiàn)在我們有了第一個需要求出自變量值的操作符,讓我們來看看quote操作符的作用——通過引用(quote)一個表,我們避免它被求值。一個未被引用的表達式作為自變量,atom將其視為代碼,例如:
> (atom (atom 'a)) t
反之一個被引用的表僅僅被視為表
> (atom '(atom 'a))
()
引用看上去有些奇怪,因為你很難在其它語言中找到類似的概念,但正是這一特征構成了Lisp最為與眾不同的特點——代碼和數(shù)據(jù)使用相同的結構來表示,而我們用quote來區(qū)分它們。
公理三:
(eq x y)當x和y的值相同或者同為空表時返回t,否則返回空表() > (eq 'a 'a) t > (eq 'a 'b) () > (eq '() '()) t
公理四:
(car x)要求x是一個表,它返回x中的第一個元素,例如: > (car '(a b)) a
公理五:
(cdr x)同樣要求x是一個表,它返回x中除第一個元素之外的所有元素組成的表,例如: > (cdr '(a b c)) (b c)
公理六:
(cons x y)要求y是一個表,它返回一個表,這個表的第一個元素是x,其后是y中的所有元素,例如: > (cons 'a '(b c)) (a b c) > (cons 'a (cons 'b (cons 'c ()))) (a b c)
公理七:
條件分支,在Lisp中,它是由cond操作符完成的,cond是七個公理中最后一個也是形式最復雜的一個(歐幾里德的最后一個公理也如是): (cond (p1e1) (p2e2)...(pnen)) p1到pn為條件,e1到en為結果,cond操作符依次對p1到pn求值,直到找到第一個值為原子t(還記得嗎?)的p,此時把對應的e作為整個表達式的值返回,例如: > (cond ((eq 'a 'b) 'first) ((atom 'a) 'second)) second
相關條目[ ]