Programmation
Fonctionnelle
Didier Verna
EPITA
Généralités
Lambda
En argument
Généralités
Motifs
En retour
Généralités
Motifs
Comme objets
Approches Fonctionnelles de la
Programmation
Fonctions du 1er ordre
Didier Verna
http://www.lrde.epita.fr/˜didier
1/38
Programmation
Fonctionnelle
Didier Verna
EPITA
Généralités
Lambda
En argument
Généralités
Motifs
En retour
Généralités
Motifs
Comme objets
Table des matières
1Généralités
2Fonctions anonymes
3Arguments fonctionnels
Généralités
Motifs courants
4Retours fonctionnels
Généralités
Motifs Courants
5Objets fonctionnels
2/38
Programmation
Fonctionnelle
Didier Verna
EPITA
Généralités
Lambda
En argument
Généralités
Motifs
En retour
Généralités
Motifs
Comme objets
Définitions niveau fonction
Définitions simples
Lisp
(defun backwards ( l s t )
(reverse l s t ) )
Scheme
(def i ne ( backwards lst )
(reverse l s t ) )
Haskell
backwards : : [ a ] > [ a ]
backwards xs = reverse xs
Lisp
(s e t f (symbolfunction ’ backwards )
# ’ reverse )
Scheme
(def i ne backwards reverse )
Haskell
backwards : : [ a ] > [ a ]
backwards = reverse
4/38
Programmation
Fonctionnelle
Didier Verna
EPITA
Généralités
Lambda
En argument
Généralités
Motifs
En retour
Généralités
Motifs
Comme objets
Lisp : Symboles
Lisp-1 (Scheme) vs. Lisp-2 (Common Lisp)
Les symboles contiennent
des propriétés, dont une
valeur et une valeur
fonctionnelle.
Un symbole peut dénoter à
la fois une variable et une
fonction (espaces de noms
distincts).
defun et defparameter
ne sont pas indispensables
(macros).
Valeur Valeur fonctionnelle
.....
foobar
(defparameter foo3)
(defun foo( x ) (2 x ) )
(s e t f ( symbolvalue ’f oo ) 3)
(s e t f (symbolfunction ’foo )
( lambda ( x ) (2 x ) ) )
5/38
Programmation
Fonctionnelle
Didier Verna
EPITA
Généralités
Lambda
En argument
Généralités
Motifs
En retour
Généralités
Motifs
Comme objets
Lisp : Valeurs vs. valeurs fonctionnelles
API pour l’appel de fonction
Fonction function, read-macro #’
(ass e rt (eq ( f u n c tio n +) # ’+ ) )
Fonction (funcall func &rest args)
(funcall # + 1 2 3 4 5)
Fonction (apply func arg &rest args)
(apply # + 1 2 3 ( 4 5 ))
6/38
1 / 33 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !