ENSEIRB Première Année 2002/2003

Programmation Fonctionnelle : feuille 1

Premiers pas - Expressions et fonctions

Exercice 1.1 Objets auto-évaluants Évaluer des entiers, des flottants, des rationnels, des complexes, des vecteurs, des caractères, des chaînes de caractères, les booléens. Exercice 1.2 Premières évaluations d’expressions Évaluer:

1. 3 + 4.

2. 3.2 ∗ 4.5.

3. | − 5.3|/cos(4.3).

4. 3/4 − 4/5.

5. (1 + i3) ∗ (2 + i4).

Exercice 1.3 Arguments facultatifs et/ou nombre arbitraire d’arguments Évaluer, et cela après en avoir vérifié la définition par:

• la documentation “on-line” associée aux symboles

     (exemple: (documentation '+ 'function));

• par la documentation Hyperspec:

1. 1 + 2 + 3 + 4.

2. maximum(1, 2, 3, 4, 5, 6, 7, 8, 9, 8, 7, 6, 5, 4, 3, 2, 1).

3. log_{3}(4).

Exercice 1.4 Typage dynamique Pour le vérifier, utiliser les prédicats prédéfinis de la forme <type>p (exemple: stringp pour une chaîne). Exercice 1.5 Définition de nouveaux symboles Vérifier qu’un symbole défini à l’aide de defconstant n’est pas réaffectable, contrairement à

setf.

Exercice 1.6 Définition de nouvelles fonctions Implémenter:

1. x + 3.

2. x^{2}.

3. La valeur absolue.

4. La moyenne de deux nombres.

5. ∑_{i=n}^{p} i.

6. Factorielle (version récursive).

7. Fibonacci.

Exercice 1.7 Variables libres

1. Implémenter la fonction associée à la formule de la période du pendule T (L) = 2 ∗ π ∗ \sqrt{L/g} (avec g variable globale valant 10).

2. On apprend brutalement que g = 9.81. Faut-il modifier l’implémentation de la fonction T?