最近看完的书大部分和lisp有关系:

  1. 《Build Your Own Lisp》
  2. 《The Common Lisp Cookbook》
  3. 《Let Over Lambda 中文版》
  4. 《Extending a Language — Writing Powerful Macros in Scheme》

Lisp和scheme的语法差不多,但是除了宏以外还有一个最明显的区别,(cdr '())会计算出不同的东西。

SBCL
* (cdr '())
NIL
* (cdr nil)
NIL
*
ChezScheme
> (cdr '())
Exception in cdr: () is not a pair

Lisp的做法可以让代码更简洁,但是scheme的看起来更直观,比如

(cond ((cdr (lookup lat a)) ...)
...
)

Lisp对返回的空的list就能直接返回,而scheme会返回错误,因为空的lisp不能应用cdr,但是scheme有带参数的cond跳转。我个人觉得scheme更自洽一点,毕竟'()不是一个特殊的值。

想看完的还是两本,才看了一半
《SICP》
《EOPL》
闲暇的时候翻翻下面的书
《scheme 9 from empty space》
《Software Design for Flexibility》
《Lisp in Small Pieces》

其实最感兴趣的还是VM的编译和实现,似乎现在很少有这方面的书籍
ribbit我已经移植到esp32上面了,但是怎么实现像fasl一样的东西还是没什么头绪,虽然vm部分实现很简单,但是scheme的编译器部分几乎都没有什么注释。

标签: none

评论已关闭