Procédure lambda en scheme

Procédure lambda en scheme - Langages fonctionnels - Programmation

Marsh Posté le 24-12-2007 à 12:59:41    

Bonjour  :hello:  
 
Je dois faire un apprentissage express des bases de Scheme pour faire un travail (sur la méta-programmation et la réflection).
 
J'ai une petite question :
 
Si je déclare une procédure
 
(define (add2 x)
  (+ x 2))
 
ou
 
(define add2
  (lambda (x)
    (+ x 2)))
 
Qu'apporte le lambda ? ces 2 procédures sont elles identiques ? D'après ce que j'ai compris le lambda permet de créer une procédure sans la lier à une variable mais dans le cas ou on la lie quand même est-ce utile ? Car la première forme semble plus intuitive et pourtant c'est toujours la 2eme que je vois dans des exemples.
     

Reply

Marsh Posté le 24-12-2007 à 12:59:41   

Reply

Marsh Posté le 24-12-2007 à 13:19:13    

Les deux syntaxes sont exactement équivalentes, la première étant en fait un alias pour la seconde (quand un interpréteur scheme trouve la première syntaxe, il la transforme automatiquement en la seconde)

 

Quand à savoir pourquoi la seconde syntaxe est souvent utilisée dans les exemples, probablement à cause de sa régularité: elle correspond exactement à l'utilisation classique de define (define nom valeur), la valeur étant ici une fonction anonyme.

 

La première syntaxe utilise bien le nom define mais une syntaxe qui diffère de son utilisation habituelle, et peut donc amener à une confusion sur le rôle/fonctionnement de define.


Message édité par masklinn le 24-12-2007 à 13:19:46

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
Reply

Marsh Posté le 24-12-2007 à 17:34:09    

Un grand merci pour cette explication très claire :jap:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed