阅读和理解 Common Lisp (HyperSpec) 文档

Reading and Understanding Common Lisp (HyperSpec) Documentation

为了更深入地了解 Common Lisp 的工具,我发现自己在阅读文档时遇到了困难。也就是说,很难理解所讨论的宏的用法是什么样的。

例如,考虑 this:

do ({var | (var [init-form [step-form]])}*) (end-test-form result-form*) declaration* {tag | statement}*

如何解释括号?圆括号 () 是否对应于 Lisp 列表?什么是竖条?大括号?星号?

我基本上可以阅读 Unix 手册页并很好地理解它们的语法;然而,这里似乎发生了完全不同的事情。

这是对我的评论的扩展,我认为它可以作为答案。

首先请记住 CLHS 是一个规范:它通常不是很好的入门 material,尽管当然有很多人从中学习了 CL。一些符号在规范的纸质(或 PDF)版本中也更容易阅读:虽然转换为 HTML 非常好(并且在当时是英勇的)它并不总是完全正确的:如果你能获得纸质副本在某些情况下更好。

也就是说:section 1.4.1 has notational conventions, and section 1.4.1.2专门处理规范中使用的 BNF 变体。