INFO0054 - Programmation fonctionnelle
R´ep´etition 5: Les sp´ecificit´es de la programmation
fonctionnelle
Jean-Michel Begon
23 Mars 2017
Les listes variables d’arguments
Exercice 1.
Que renvoie l’´evaluation des expressions suivantes :
(+) (*) (list)
Exercice 2.
Ecrire une fonction my+ `a un nombre variable d’arguments et qui renvoie la somme de ces ´el´ements.
Closure et factory
Exercice 3.
D´efinir les fonctions symmetrize et anti-symmetrize, qui prennent comme argument une fonction f:
RRet qui renvoient respectivement les fonctions
f0:RRx7→ f(x) + f(x)
2
et
f0:RRx7→ f(x)f(x)
2
D´efinir ensuite une fonction func-op `a trois arguments, un op´erateur op de R×RR, et deux fonctions
unaires fet g.func-op renvoie la fonction unaire htelle que
xR:h(x) = op (f(x),g(x))
Red´efinir ensuite symmetrize et anti-symmetrize `a partir de func-op.
Exercice 4.
D´efinir une fonction compose-n qui renvoie la fonction unaire donn´ee en argument nfois compos´ee avec
elle-mˆeme.
1
Variante :
´
Ecrire une fonction compose-fgf qui prend comme argument une fonction fet renvoie une fonction qui
prend comme argument une fonction get qui renvoie la fonction fgf.
Variante 2 :
´
Ecrire une fonction compose-fgab qui prend comme argument deux fonctions fet g, ainsi que deux entiers
aet bet renvoie la fonction
f. . . f
| {z }
a
g. . . g
| {z }
b
Variante 3 :
´
Ecrire une fonction compose-fa qui prend comme argument une fonction fet deux entier a, b et renvoie
la fonction
x7→ f. . . f
| {z }
a
(bx)
Les listes variables d’arguments et closure
Exercice 5.
Ecrire une fonction linear-map-factory `a un nombre variable d’arguments r´eels et qui renvoie une fonc-
tion prenant une liste de r´eel en argument et renvoyant le produit scalaire entre cette liste et les arguments
encapsul´es.
Exercice 6.
Ecrire une fonction mymap qui prend une fonction f:D1×. . .×DnY(n1) ainsi que nlistes l1,...,ln
telles que |li|=met les ´el´ements de liappartiennent `a Di(1 in) et qui renvoie une liste ys de m
´el´ements telle que ysj=f(l(j)
1,...,l(j)
n) (1 jm).
(mymap (lambda (x y) (+ (* x 2) y)) ’(1 2 3) ’(1 1 1)) ==> ’(3 5 7)
Exercice 7.
Ecrire une fonction curry qui prend deux arguments, une fonction f:D1×. . . ×DnYet un ´el´ement
d1D1et qui renvoie une fonction h:D2×. . . ×DnYtelle que (h d2. . . dn) = (f d1d2. . . dn).
CPS
Exercice 8.
Ecrire une fonction sqrt* qui `a tout entier strictement positif nassocie le nombre
rn+qn1 + ··· +1
de mani`ere classique (r´ecursion directe) et en CPS.
Exercice 9.
Ecrire une fonction sqrt*-inv qui `a tout entier strictement positif nassocie le nombre
r1 + q2 + ··· +n
en CPS.
2
Les structures de donn´ees
Exercice 10.
Proposer une impl´ementation d’une file `a l’aide de deux listes.
3
1 / 3 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 !