lisp作為「函式式程式設計」語言,與c語言有何不同?

時間 2021-06-07 08:16:32

1樓:馬vc

1,此函式非彼函式。

lisp 裡函式是first class,換句話說乙個函式是可以當作其他函式的返回值

c 裡邊函式是third class,不能作為其他函式返回值,不能當其他函式的引數。

c可以說是algo方言,algo像英語,lisp更像數學。

2,函式式語言通有的特性是parameter polymorphic,通俗點說你用c寫了個"int quickSort(int arr)",那這函式就只能用來比較int,但是函式式語言你就能寫quickSort(aList, aMethod), 其中aList是任意型別用來排序的list, aMethod是用來判斷該型別關係的函式,這樣能對所有型別排序。

3,函式式語言不存在變數,只能出於方便起見宣告常數。剛開始你給幾個引數,然後函式之間互相呼叫,然後給你乙個結果,這就是lisp. 同時沒變數也就沒有迴圈,想重複就得遞迴。

可想而知並不是所有我們想做的東西都可以用遞迴解決的,所以在很多需要特殊資料結構的地方lisp很不好使,比如說symbol table。

4,函式式語言裡允許有匿名函式(大函式裡套小函式,小函式裡套小小函式,大夥都沒有名字),這就需要創造cloures進行deep binding,要不然就不知道匿名函式裡的非本地引用在哪了。C裡邊沒有cloures,用全域性變數能達到相同效果,不過全域性變數容易把程式弄亂,少用。

5,lisp語義簡單,基於s表示式,可以自己解釋自己。c應該是不行。

6, 學點lisp能讓你從新的角度思考程式設計,很有啟發性。伸手可恥,自己學吧。

1A: Overview and Introduction to Lisp

祝樓主早日成大牛。

Lisp 對於程式語言的發展有哪些貢獻?

Metaobject Protocol defclass foo make instance foo class of class of class of class slots slot value ccl slots lambda喵 函式式語言,perl語言,schema,smalltalk 等...

Windows C 語言和標準的 C 語言有何不同?

Summer Mr c語言標準有很多,標準的c語言標準是ANSI C,這在Windows下和linux下或其他平台上一樣,比如一些常見的字元操作函式,輸入輸出函式的原型都是一樣的,但是可能因為平台上編譯器的實現的不同而略有差異。 學一下彙編或者反彙編就明白了。各種語言對函式呼叫引數的不同傳遞方式.比...

函式式程式語言該如何表示樹結構呢?

二叉樹可以描述如下 datatype a tree Empty Node of a tree a a tree 多叉樹可以描述如下 datatype a tree Empty Node of a a tree list 參考 programing in standard ml 黃玄 表示成這麼乙個型...