Чтение и понимание документации Common Lisp (HyperSpec)
Пытаясь глубже познакомиться с инструментами Common Lisp, я столкнулся с трудностями при чтении документации. А именно, трудно понять, как будет выглядеть использование рассматриваемого макроса.
Например, рассмотрим это:
do ({var | (var [init-form [step-form]])}*) (end-test-form result-form*) declaration* {tag | statement}*
Как интерпретировать скобки? Сделать круглые скобки ()
соответствовать списку Lisp? Что такое вертикальная черта? Фигурные скобки? Звездочка?
Я в основном могу читать man-страницы Unix и хорошо понимать их синтаксис; однако, похоже, что здесь происходит нечто совершенно иное.
1 ответ
Это расширение моего комментария, который, я думаю, служит ответом.
Прежде всего, помните, что CLHS - это спецификация: часто это не очень хороший вводный материал, хотя многие, конечно, изучили CL на его основе. Некоторые из обозначений также легче читать в бумажной (или PDF) версии спецификации: хотя преобразование в HTML довольно хорошее (и в то время было героическим), оно не всегда полностью верно: если вы можете получить бумажную копию это лучше в некоторых случаях.
При этом: раздел 1.4.1 имеет условные обозначения, а раздел 1.4.1.2 специально посвящен варианту BNF, используемому в спецификации.