En Lisp et d'autres langues qui utilisent des S-expressions pour la syntaxe, les parenthèses sont principalement au profit du compilateur, tandis que la mise en page et de l'indentation (qui sont ignorés par le compilateur) sont à l'avantage de programmeurs.
Donc, il n'est pas nécessaire de mettre des parenthèses de fermeture sur leurs propres lignes: bien choisi les sauts de ligne et l'indentation sera suffisant pour faire une structure claire.
Par exemple,
(defun clone-indirect-buffer-other-window (newname display-flag &optional norecord)
"Like `clone-indirect-buffer' but display in another window."
(interactive
(progn
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name))
(list (if current-prefix-arg
(read-buffer "Name of indirect buffer: " (current-buffer)))
t)))
(let ((pop-up-windows t))
(clone-indirect-buffer newname display-flag norecord)))
La structure est clair (un peu expérimenté programmeur Lisp) de l'indentation. Rien ne serait ajouté en mettant des parenthèses de fermeture vers le bas sur les nouvelles lignes:
(defun clone-indirect-buffer-other-window (newname display-flag &optional norecord)
"Like `clone-indirect-buffer' but display in another window."
(interactive
(progn
(if (get major-mode 'no-clone-indirect)
(error "Cannot indirectly clone a buffer in %s mode" mode-name)
)
(list (if current-prefix-arg
(read-buffer "Name of indirect buffer: " (current-buffer))
)
t)
)
)
(let ((pop-up-windows t))
(clone-indirect-buffer newname display-flag norecord)
)
)
Je dois ajouter que presque tous les programmeurs Lisp utiliser un éditeur de texte qui affiche les correspondances entre parenthèses, effectue la mise en retrait, et fournit une interface utilisateur pour travailler directement avec équilibré expressions. Dans Emacs, par exemple, il y a M-( pour l'insertion d'une nouvelle expression, M-) pour le déplacement depuis la fin de l'expression actuelle, C-M-k pour la suppression de l'expression après le point, et ainsi de suite.
Si les programmeurs Lisp ne jamais avoir à compter les parenthèses à la main, afin de déterminer celles qui correspondent.
Taylor R. Campbell exprime de façon éloquente ce raisonnement:
Le véritable support de caractères sont simplement lexicale des jetons à qui peu d'importance devrait être attribué. Lisp les programmeurs ne pas examiner les crochets individuellement, ou, Azathoth interdire, comptez entre parenthèses; au lieu de cela ils ont vue le plus élevé au niveau des structures exprimé dans le programme, surtout que présenté par l'indentation. Lisp n'est pas sur l'écriture d'une séquence de la série d'instructions; il s'agit de construire des structures complexes par la somme des parties. La composition de structures complexes à partir de pièces est l'objet de programmes Lisp, et il devrait être évident à partir du code Lisp. En plaçant entre parenthèses au hasard, au sujet de la présentation est choquante pour un programmeur Lisp, qui, autrement, n'auraient même pas vu, pour la plupart.