Noms de certaines constructions

Certaines constructions similaires en Common Lisp et Scheme portent des noms différents. C'est souvent pour des raisons historiques que les concepteurs Common Lisp ont préféré maintenir le nom historique, alors que les concepteurs de Scheme ont décidé de les renommer.

C'est le cas notamment de labels qui en Scheme s'appelle letrec. La fonctionnalité est similaire, sauf qu'avec les multiples espaces de noms en Common Lisp les deux ne sont pas entièrement équivalents.

La macro de définition de fonction s'appelle defun en Common Lisp, alors qu'en Scheme, la syntaxe de define (qui permet de définir une variable) a été étendue pour la définition de fonctions. En Scheme, la définition d'une fonction ressemble à un appel de celle-ci, alors qu'en Common Lisp le nom et la liste des arguments sont séparés. Voici la définition d'une fonction en Scheme :

(define (distance x1 y1 x2 y2)
  (let ((distx (- x2 x1))
        (disty (- y2 y1)))
    (sqrt (+ (* distx distx) (* disty disty)))))

Irene DURAND
2011-10-14