mardi 22 janvier 2008

C'est bien l'auto-notation

... enfin un contrôle utile. Et un corrigé lu et discuté. C'est tellement rare. Merci à ceux qui en profitent.

Voici un dernier message :

> Bonsoir,
> Je viens de regarder la seconde version de votre corrigé et il y a
> quelques éléments à la question 2.2 que je trouve "étrange". Vous avez
> marqué :
>
> coll:COLLEGE
>
> Or si on marque cela, "coll" n'appartient pas forcément à "college", sauf
> que pour ajouter un nouveau couple à notre fonction partielle, il aurait
> fallut que coll:college.

Je n'ai pas mis cela ? J'ai mis à jour à 7 heures ce matin... j'ai donc fait une c... (d'ailleurs voir le blog)

IL FAUT que coll : college sinon on pourrait mettre dans le co-domaine un college qui n'est pas dans college.

Et est-ce que c'est nécessaire de mettre
> et:ETUDIANT & coll:COLLEGE si on affirme que et:etud et coll:college vu
> qu'on a affirmer dans l'invariant que etud<:ETUDIANT & college<:COLLEGE.

===============
Rappel du cours :

En B on ne fait pas d'inférence de type comme on le fait par exemple dans des langages fonctionnels ou comme on le faisait en BASIC où on ne typait pas explicitement les variables.

Quand on écrivait
5 + A l'interpréteur lisant un entier, puis le + , interprétait le + comme l'addition arithmétique et alors interprétait le A comme un entier. Inférence de type.
Si on écrivait
"toto" + A, le + était interprété comme une concaténation et A comme de type chaîne de caractères.
On dit "polymorphisme de l'opérateur +"


En B on type explicitement. Ce que vous faites c'est de l'inférence de type.
En fait, il se peut que l'Atelier B en fasse parfois. Mais je préfère systématiquement typer. Ainsi si je me plante dans mon typage, l'atelier me le dira.

Aucun commentaire: