web前端 Lisp值得去學習嗎?
Lisp值得去學習嗎?我認為這是非常值得的,而且LISP的解釋器實現(xiàn)得很好,所以它不僅可以作為一種新的學習思路,而且可以作為學習編譯原理的材料。SiCp也需要lisp,為什么不呢。有些人更容易理解LI
Lisp值得去學習嗎?
我認為這是非常值得的,而且LISP的解釋器實現(xiàn)得很好,所以它不僅可以作為一種新的學習思路,而且可以作為學習編譯原理的材料。SiCp也需要lisp,為什么不呢。有些人更容易理解LISP的思想,但是覺得Java風格是不可接受的。例如,我的一個朋友,大阪黑子,聲稱他不懂java。他一看到lisp就明白了這一點,于是加入了教學行列。我拍的另一張照片:個人:在學習編譯器原理之前,我編寫了LISP解釋器。
完成一個Scheme解釋器需要哪些知識?
參考編程語言要點目錄,按順序編寫,然后將其寫入完整的解釋器。
首先編寫一個解釋算術表達式的解釋器;
然后添加let以生成局部變量;
然后添加lambda以生成非遞歸函數(shù);
然后添加letrec以生成遞歸函數(shù);
第一類函數(shù),現(xiàn)在已經(jīng)理解/實現(xiàn)close,下面的步驟是:添加語法sugar,如if else;將cons/cat/CDR更改為內(nèi)置函數(shù)(原來lambda計算可以模擬)并改進內(nèi)存管理;
add quote and eval;
add set!引入賦值;
添加CPS轉(zhuǎn)換實現(xiàn)call/cc,支持尾部遞歸;
添加define語法支持宏;
然后再接再厲,添加一些非方案標準的東西:
添加record/set/map等數(shù)據(jù)類型,實現(xiàn)相應的匹配(模式匹配)
如果不能滿足要求,就用類型LISP做:
添加類型標簽,支持基本類型/函數(shù)類型;
支持ADT;
支持Mu類型;
添加類型派生;
支持Hindley Milner;
支持類型類/構(gòu)造函數(shù)類;
還有一些外圍工作要做:
添加FFI以使語言和C相互調(diào)用。
技能列表已準備就緒。按這個順序做是對的。另外,不管后端效率如何(沒有虛擬機,只有解釋),都不建議用C寫解釋器,最好用函數(shù)式語言寫解釋器。
解釋器相關文獻推薦:
LISP小品
編程語言要領
類型和編程語言