LISP 函式型程式語言

2021-04-26 21:17:08 字數 1967 閱讀 2146

lisp有很多種方言,各個實現中的語言不完全一樣。2023年代guy l. steele編寫了common lisp試圖進行標準化,這個標準被大多數直譯器和編譯器所接受。在unix/linux系統中,還有一種和emacs一起的emacs lisp(而emacs正是用lisp編寫的)非常流行,並建立了自己的標準。

lisp語言的主要現代版本包括common lisp和scheme。

lisp 是第乙個函式型程式語言,主要應用在人工智慧(ai)上,包含語多字元擷取函式,供作自然語言的分析之用。

lisp的表示式是乙個原子(atom)或表(list),原子(atom)又包含符號(symbol)與數值(number);表是由零個或多個表示式組成的序列,表示式之間用空格分隔開,放入一對括號中,如:

abc()

(abc xyz)

(a b (

c) d)

最後乙個表是由四個元素構成的,其中第三個元素本身也是乙個表,這種 list 又稱為巢狀表(nested list)。

正如算數表示式 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

現在我們有了第乙個需要求出自變數值的操作符,讓我們來看看 quote 操作符的作用——通過引用(quote)乙個表,我們避免它被求值。乙個未被引用的表示式作為自變數,atom 將其視為**,例如:

> (

atom

(atom

'a))t

反之乙個被引用的表僅僅被視為表

> (

atom

'(atom

'a))(

)

引用看上去有些奇怪,因為你很難在其它語言中找到類似的概念,但正是這一特徵構成了 lisp 最為與眾不同的特點——**和資料使用相同的結構來表示,而我們用 quote 來區分它們。(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)

common lisp的hello world程式

下面是乙個在標準輸出裝置上輸出hello world的簡單程式,這種程式通常作為開始學習程式語言時的第乙個程式:

(format t "hello, world!~%")

lisp不是函授型語言 LISP語言

拼音 lisp yuyan 外文 lisp 為非數值符號運算而設計的表處理語言。lisp是英文list processing 表處理 的縮寫。lisp語言是1960年j.麥卡錫在遞迴函式論基礎上首先設計出來的。lisp語言的形式化程度高,表達力強,適合於描述各種知識和編寫問題求解的程式,因此一直是用...

lisp語言 崛起的函式式程式設計與它的語言們

全文共2055字,預計學習時長6分鐘 托馬斯.庫爾提出 科學的革命 的正規化論後,robert floyd在1979年圖靈獎的頒獎演說中使用了程式設計正規化一詞。程式設計正規化,簡單來說,就是編寫命令的方法。眾所周知,一門語言的思想建立在其程式設計正規化之上。最知名的三種正規化分別是物件導向程式設計...

Lisp永遠成不了程式設計主流語言

lisp語言是第二古老的高階程式語言。許多的黑客和開發者對lisp推崇備至,paul graham甚至說 程式語言現在的發展,不過剛剛趕上1958年lisp語言的水平 然而這樣先進的語言在現在使用的程式語言從來沒有排到前20,聽說它的人不少,用的人卻非常少。許多人對lisp語言的第一印象就是一層層的...