web前端 Lisp值得去学习吗?
Lisp值得去学习吗?
我认为这是非常值得的,而且LISP的解释器实现得很好,所以它不仅可以作为一种新的学习思路,而且可以作为学习编译原理的材料。SiCp也需要lisp,为什么不呢。有些人更容易理解LISP的思想,但是觉得Java风格是不可接受的。例如,我的一个朋友,大阪黑子,声称他不懂java。他一看到lisp就明白了这一点,于是加入了教学行列。我拍的另一张照片:个人:在学习编译器原理之前,我编写了LISP解释器。
完成一个Scheme解释器需要哪些知识?
参考编程语言要点目录,按顺序编写,然后将其写入完整的解释器。
首先编写一个解释算术表达式的解释器;
然后添加let以生成局部变量;
然后添加lambda以生成非递归函数;
然后添加letrec以生成递归函数;
第一类函数,现在已经理解/实现close,下面的步骤是:添加语法sugar,如if else;将cons/cat/CDR更改为内置函数(原来lambda计算可以模拟)并改进内存管理;
add quote and eval;
add set!引入赋值;
添加CPS转换实现call/cc,支持尾部递归;
添加define语法支持宏;
然后再接再厉,添加一些非方案标准的东西:
添加record/set/map等数据类型,实现相应的匹配(模式匹配)
如果不能满足要求,就用类型LISP做:
添加类型标签,支持基本类型/函数类型;
支持ADT;
支持Mu类型;
添加类型派生;
支持Hindley Milner;
支持类型类/构造函数类;
还有一些外围工作要做:
添加FFI以使语言和C相互调用。
技能列表已准备就绪。按这个顺序做是对的。另外,不管后端效率如何(没有虚拟机,只有解释),都不建议用C写解释器,最好用函数式语言写解释器。
解释器相关文献推荐:
LISP小品
编程语言要领
类型和编程语言
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。