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語言的第一印象就是一層層的...