Часто бывает полезно сделать отступ в коде, если есть такая ошибка.Обычно это можно сделать в редакторе с помощью ключевой команды.
Но Lisp также поставляется со встроенным форматированием кода, которое называется pretty printing :
CL-USER > (let ((*print-right-margin* 60))
(pprint '
; your code follows:
(defun all-pos (item seq start)
(let ((pos (position item seq :start start))
(if pos
(cons pos
(all-pos item seq (+ 1 pos)))
nil))))
))
Выходные данные выглядят так:
(DEFUN ALL-POS (ITEM SEQ START)
(LET ((POS (POSITION ITEM SEQ :START START))
(IF POS (CONS POS (ALL-POS ITEM SEQ (+ 1 POS)))
NIL))))
Это облегчает понимание того, что if
находится на том же уровне отступа, что и привязка переменной pos
. Это не может быть правильно!
Чтобы отформатировать код с помощью Lisp, вам просто нужно:
(let ((*print-right-margin* 60))
(pprint '
; here goes your code
))
и Lisp отформатирует его для вас ...