Je suis nouveau à Common Lisp, et je me suis retrouvé en profitant des fonctions de la fonction retourne des valeurs. Voici deux exemples triviaux:Un bon moyen de programmer en Lisp?
(defun safe-avg (a b)
(and (numberp a) (numberp b) (/ (+ a b) 2)))
(defun safe-div (a b)
(and (numberp a) (numberp b) (> b 0) (/ a b)))
Mais je aurais pu l'écrire comme ça (sans doute plus clair):
(defun safe-avg (a b)
(if (and (numberp a) (numberp b))
(/ (+ a b) 2)))
(defun safe-div (a b)
(if (and (numberp a) (numberp b) (> b 0))
(/ a b)))
Je voulais savoir quelle est la méthode préférée de faire quelque chose comme ça et le raisonnement derrière cela, avant que je commence à abuser de cette habitude.
J'utiliserais la 2ème forme. Pourquoi? Parce que c'est "moins difficile" et montre mieux l'intention. J'apprécie la lisibilité du code - à la fois maintenant et dans 6 mois à partir de maintenant. –
J'étais habitué à schématiser, êtes-vous sûr que la fonction est équivalente? Pour moi pas, comme le premier couple de fonction renvoie false si la contrainte ne sont pas satisfaire le second ne semble pas spécifier une valeur de retour – Eineki