Programmez un Tetris en Java 360 pages PDF pour apprendre à votre rythme. Développez des jeux vidéo en Java. www.jdevmaker.com |
Ce document est sous un contrat Creative Commons.
Nous ne l'avons pas vu, mais le Scheme utilise des formes complexe, mais peu aussi utiliser des formes simplifiés de ces formes complexe, et parvenir au même résultat. C'est le cas avec les fonctions let, let* et letrec.
Le Scheme est bâti sur un formalisme mathématique appelé le lambda calcul, et lambda est une pierre angulaire du Scheme.
Cependant nous abordons un sujet intéressant mais qui dépasse largement le cadre de la documentation Scheme pour Gimp. Ces formes sont quasi inutiles à Gimp (parce que pouvant être remplacés par d'autres plus simple), et de plus elle renvoie a des notions de programmation pour le moins complexe, dont je ne parlerais même pas car ça ne rigole plus...
Comme on voit parfois lambda dans certains scripts, je vais seulement vous démontrer les simplifications ou réécriture que l'on peut faire, pour tentez de vous faire comprendre son utilisation.
Souvenons nous que l'on peut utiliser define de 2 façons :
lambda retourne ce que l'on appel une fonction anonyme.
Sa forme est :
(lambda (p1 p2 pm) exp1 exp2 expn)
par exemple :
(lambda (x y) (+ x y))
Attribuons les arguments 2 et 5 à cette fonction anonyme :
Tapez dans la console Script-fu :
((lambda (x y) (+ x y)) 2 5)
=> ((lambda (x y) (+ x y)) 2 5)
7
Vous ne voyez peut-être pas encore le rapport avec la fonction (define (addition x y) (+ x y)). C'est qu'il vous manque le lien... Sachez qu'il est possible de définir une variable comme étant une fonction anonyme. Ce que nous allons faire avec la variable addition2 :
Tapez dans la console Script-fu :
(define addition2 (lambda (x y) (+ x y)))
=> (define addition2 (lambda (x y) (+ x y)))
#<CLOSURE (x y) (+ x y)>
Tapez dans la console Script-fu :
(addition2 2 5)
=> (addition2 2 5)
7
Vous voyez maintenant que la syntaxe de la forme ci-dessus peut être simplifié en :
(define (addition2 x y) (+ x y))