由浅入深学习 Lisp 宏之理论篇

2017-09-03
阅读 4 分钟
7.1k
宏(macro)是 Lisp 语言中最重要的武器,它可以自动生成运行时的代码。宏也是编写领域特定语言(DSL)的利器,可以在不改动语言本身的基础上,增加新的程序构造体,这在其他语言中是不可能。比如,现在比较流行的同步方式写异步代码的 async/await,在非 Lisp 语言需要语言本身支持,但是在 Lisp 里面可以通过几个宏来...

如何实现一个没有名字的递归函数

2016-02-22
阅读 4 分钟
4.3k
递归 作为计算机科学中很重要的一个概念,应用范围非常广泛。比较重要的数据结构,像树、图,本身就是递归定义的。比较常见的递归算法有阶乘、斐波那契数等,它们都是在定义函数的同时又引用本身,对于初学者来说也比较好理解,但是如果你对编程语言,特别是函数式语言,有所研究,可能就会有下面的疑问: