在尝试更深入地熟悉Common Lisp的工具时,我发现自己在阅读文档时感到很挣扎。即,难以理解所讨论的宏的用途将是什么样的。
例如,考虑this:
do ({var | (var [init-form [step-form]])}*) (end-test-form result-form*) declaration* {tag | statement}*
如何解释括号?圆括号()
是否对应Lisp列表?什么是垂直条?大括号?星号?
我几乎可以阅读Unix手册页并很好地理解它们的语法;然而,这里似乎发生了一些完全不同的事情。
答案 0 :(得分:9)
这是我评论的扩展,我认为这是一个答案。
首先请记住,CLHS是一个规范:它通常不是非常好的介绍材料,尽管很多人当然从中学到了CL。一些符号在规范的纸质(或PDF)版本中也更容易阅读:虽然转换为HTML非常好(当时是英雄的)但它并不总是完全正确:如果你能得到纸质副本在某些情况下会更好。
话虽如此:section 1.4.1有符号约定,section 1.4.1.2专门处理规范中使用的BNF变体。