Форматирование кода Lisp

Я нашел проблему, я добавил 'Content-Type': 'multipart/form-data' в заголовки, когда я отправляю запрос из моей угловой формы. И я попытался использовать busboy для разбора полей, и это привело меня к другой проблеме, по какой-то причине заблокировавшей сердцевину. Есть идеи по этому поводу? Кстати, спасибо.

37
задан Community 23 May 2017 в 12:26
поделиться

4 ответа

Закрывающие скобки на дополнительных строках действительно не помогают с наблюдением структуры кода, потому что можно получить ту же информацию от уровня добавления отступа. Однако вторая форма поднимает почти вдвое больше строк, вынуждая Вас прокручивать чаще при чтении кода.

И если необходимо осмотреть вложенные круглые скобки более тесно, редактор, который выделяет круглую скобку соответствия, поможет Вам. Это также будет легче, когда круглая скобка соответствия не будет слишком далеко.

, Если выражения становятся слишком длинными и сложными, чтобы быть легко считанными, это может также быть знак, что необходимо извлечь часть функциональности в отдельную функцию.

38
ответ дан Christian Berg 27 November 2019 в 04:30
поделиться

Путем код Lisp форматируется, вид подобных значительный пробел в Python, за исключением того, что это является, конечно, дополнительным. Основное эмпирическое правило - то, что Вы помещаете объекты в список друг под другом вертикально, если они не находятся на той же строке.

(a (b (c (d e)
         (f g))
      (h i j))
   (k l m n))

, даже не смотря на круглую скобку, Вы видите, что (d e) и (f g) параметры для c, (c (d e) (f g)) и (h i j) параметры для b, и (b (c (d e) (f g)) (h i j)), и (k l m n) параметры для [1 110].

С Вашим примером, это должно более правильно быть отформатировано следующим образом:

(if (= a something)
    (if (= b otherthing)
        (foo)))

    ^   ^
  notice how they line up

Теперь, когда уровень отступа становится значимым, Вы больше не должны полагаться на балансирующуюся круглую скобку для получения той информации, и так как это более компактно для помещения их на ту же строку как заключительный оператор, это - то, что делают lispers. Предоставленный, не требуется, что код Lisp форматирован этот путь, но это - довольно стандартная конвенция, которую люди используют и могут полагаться.

37
ответ дан Kyle Cronin 27 November 2019 в 04:30
поделиться

Когда у Вас есть 10 круглых скобок для закрытия, это становится действительно неуклюжим.

, Когда я раньше программировал Lisp, я оставил пространство между закрывающими скобками для вводных круглых скобок на той же строке и остальных, для упрощения подсчета, как это:

(if (= a something)
  (if (= b otherthing)
    (foo) ))

я предполагаю в эти дни, что это больше не необходимо, поскольку редакторы более услужливы.

0
ответ дан starblue 27 November 2019 в 04:30
поделиться

Простой ответ - то, что Вашим путем не является способ, которым симпатичный принтер Lisp делает вещи. Наличие ОДНОГО ФОРМАТА TRUE всегда является хорошей вещью для кода, и макрос печати дает Вам, что формат встроил в язык.

, Конечно, , потому что макрос печати существует, это не строго необходимо, чтобы Вы следовали за стандартным форматированием кода, потому что люди могут просто выполнить Ваш код через печать и получить то, к чему они привыкли. Однако, так как все остальные используют печать или вручную приближают ее, Вам будет нелегко читать код, если Вы не сделаете этого тот же путь, и у Вас нет легкого макроса, который превратит их код в Ваш предпочтительный формат.

3
ответ дан Xanthir 27 November 2019 в 04:30
поделиться