无疑列表(list)也是一种。上过编译课吧? 还模模糊糊记得一点吧?...第一次看s表达式(Lisp)时, 括号很烦人是吧? 现在我们明白了背后的道理, 一下子就变得容易多了。至少, 比XML要好的多。用s表达式写代码, 不单是实用, 而且也很让人愉快。...而且, Lisp没有语义约束, 你可以构造任何数据结构, 只要你原意。
Lisp通过宏(macro)来做元编程。我们写一组宏来把任务列表(to-do list)转换为专用领域语言。...宏所占的位置, 就被替换为这个结果代码。我们可以定义一个宏把数据替换为任意代码, 比方说, 替换为显示数据给用户的代码。这和元编程, 以及我们要做的任务表程序有什么关系呢?...实际上, 编译器会替我们工作, 调用相应的宏。我们所要做的, 仅仅是创建一个把数据转换为适当代码的宏。