В Common Lisp:
;;;; At the top of source files
;;; Comments at the beginning of the line
(defun test (a &optional b)
;; Commends indented along with code
(do-something a) ; Comments indented at column 40, or the last
(do-something-else b)) ; column + 1 space if line exceeds 38 columns
Примечание: Emacs не очень хорошо распознает #| |#
, но, как предлагает Райнер в комментариях, попробуйте вместо этого использовать #|| ||#
.
Я бы сказал, что нет никаких правил, чтобы использовать это, но я считаю, что это быстрее для комментирования огромного количества кода или для вставки некоторого длинного описания, где точки с запятой просто мешают редактированию, например, огромные списки BNF или и тому подобное.
Есть хитрый трюк для отключения кода, который заключается в добавлении префикса к выражению #+(or)
:
(defun test (a &optional b)
#+(or)
(do-something a)
(do-something-else b))
Примечание: #+nil
обычно тоже работает, если у вас нет функции nil
или :nil
. Преимущество #+(or)
заключается в том, что вы можете легко редактировать его, либо закомментировав его, либо изменив его на #+(and)
, либо фактически включив в него набор функций, для которых вы действительно хотите, чтобы это выражение было прочитано.
SLIME помогает здесь, обозначая форму (do-something a)
как комментарий, когда у вас запущен Lisp.
Помимо особых синтаксических комментариев и уловок Common Lisp, таких как #| |#
и #+(or)
или более часто встречающихся #+nil
, я считаю, что правила точки с запятой широко распространены и в других списках.
Вот выдержка из спецификации , обратите внимание, как текущая практика изменилась в отношении одной точки с запятой:
2.4.4.2 Заметки о стиле для точки с запятой
Некоторые текстовые редакторы делают предположения о желаемом отступе, основываясь на количестве точек с запятой, начинающих комментарий. Следующие соглашения по стилю распространены, хотя ни в коем случае не являются универсальными.
2.4.4.2.1 Использование одной точки с запятой
Комментарии, начинающиеся с одной точки с запятой, выровнены по одному столбцу справа (иногда его называют «столбцом комментариев»). Текст такого комментария обычно относится только к той строке, в которой он появляется. Иногда два или три содержат одно предложение вместе; на это иногда указывают отступы для всех, кроме первого, с дополнительным пробелом (после точки с запятой).
2.4.4.2.2 Использование двойной точки с запятой
Комментарии, начинающиеся с двойной точки с запятой, выровнены по тому же уровню отступа, что и форма в той же позиции в коде. В тексте такого комментария обычно описывается состояние программы в момент появления комментария, код, следующий за комментарием, или оба.
2.4.4.2.3 Использование тройной точки с запятой
Комментарии, начинающиеся с тройной точки с запятой, выровнены по левому полю. Обычно они используются перед определением или набором определений, а не внутри определения.
2.4.4.2.4 Использование четвертой точки с запятой
Комментарии, начинающиеся с четырехкратной точки с запятой, выровнены по левому полю и, как правило, содержат только короткий фрагмент текста, который служит заголовком для кода, который следует, и может использоваться в верхнем или нижнем колонтитуле программы. который готовит код для представления в виде печатного документа.
2.4.4.2.5 Примеры стиля для точки с запятой
;;;; Math Utilities
;;; FIB computes the the Fibonacci function in the traditional
;;; recursive way.
(defun fib (n)
(check-type n integer)
;; At this point we're sure we have an integer argument.
;; Now we can get down to some serious computation.
(cond ((< n 0)
;; Hey, this is just supposed to be a simple example.
;; Did you really expect me to handle the general case?
(error "FIB got ~D as an argument." n))
((< n 2) n) ;fib[0]=0 and fib[1]=1
;; The cheap cases didn't work.
;; Nothing more to do but recurse.
(t (+ (fib (- n 1)) ;The traditional formula
(fib (- n 2)))))) ; is fib[n-1]+fib[n-2].