TD/TP Caml n°2 : Complément sur les fonctions, typage et polymorphisme

1. Rappels et compléments - Plan

Fermeture

Règle de typage des applications

Fonction retournant une fonction

Fonction dont les arguments sont des fonctions

Applications partielles

Déclaration de fonctions infixes (opérateurs)

Polymorphisme

Limites du polymorphisme

Notion de variable de type faible

2. Exercices

Exercice 1

Redéfinir la fonction id' sous forme polymorphe.

Exercice 2

1. Ecrire une fonction first qui, à un couple (x, y), renvoie le premier élément du couple.

2. Ecrire une fonction last qui, à un couple (x, y), renvoie le second élément du couple.

3. Finir la construction

#let (++) a b = ( ... , ...);;
pour que l'opérateur (++) puisse être utilisé comme suit
#(1, true) ++ (2, false);;
- : int*bool = 3, false
Le résultat obtenu consiste à faire la somme des premiers composantes et à appliquer un "et" logique sur les secondes composantes.

Exercice 3

Typer et évaluer les 3 constructions suivantes

#let h = function u -> function x -> u x x;;
#let add x y = x+y;;
#h add 4;;