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

LISP

來自站長百科
跳轉(zhuǎn)至: 導航、? 搜索

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

相關條目[ ]


參考來源[ ]