Pour les utilisateurs expérimentés de Lisp, le niveau d'imbrication est plus important que la recherche de parenthèses fermantes. Le fait de placer les parenthèses fermantes sur leurs propres lignes n'aide pas vraiment à déterminer les niveaux d'imbrication.
L'idée de base est que les parenthèses entourent directement leur contenu.
(a)
et non
(a
)
Voici ce qui suit :
(defun foo (bar)
(foo (bar (baz
...
)
...
)
...
)
)
vs.
(defun foo (bar)
(foo (bar (baz ...) ...) ...))
L'une des idées de base lors de l'édition de texte Lisp est que vous pouvez sélectionner une liste en (double-) cliquant sur les parenthèses (ou en utilisant une commande clavier lorsque le curseur se trouve à l'intérieur de l'expression ou sur les parenthèses). Vous pouvez ensuite couper/copier l'expression et la coller à un autre endroit dans une autre fonction. L'étape suivante consiste à sélectionner l'autre fonction et réindenter la fonction. C'est fait. Il n'est pas nécessaire de supprimer ou d'introduire de nouvelles lignes pour les parenthèses fermantes. Il suffit de coller et de réindenter. Cela s'intègre parfaitement. Sinon, soit vous perdriez du temps à formater le code, soit vous devriez le reformater avec un outil d'édition (pour que les parenthèses fermantes soient sur leurs propres lignes). La plupart du temps, cela créerait un travail supplémentaire et gênerait le déplacement du code.
Il y a une occasion où les lispers expérimentés écrivent parfois les parenthèses fermantes sur leur propre ligne :
(defvar *persons*
(list (make-person "fred")
(make-person "jane")
(make-person "susan")
))
Il indique ici que de nouvelles personnes peuvent être ajoutées. Placez le curseur juste avant la deuxième parenthèse fermante sur la dernière ligne, appuyez sur c-o (ouvrir la ligne), ajoutez la clause et indentez les parenthèses pour qu'elles soient à nouveau alignées. Cela évite d'avoir à trouver les bonnes parenthèses et à appuyer sur la touche retour, lorsque toutes les parenthèses sont fermées sur une ligne.
9 votes
Avez-vous essayé le style 2 sur une fonction non triviale ? :-)
0 votes
Pourquoi la communauté Lisp préfère-t-elle accumuler toutes les parenthèses à la fin de la fonction ? - Stack Exchange des programmeurs