78Fermer80
PolluxLe 27/01/2006 à 14:53
BookeldOr
:
Pollux :
Ben non, comme je l'ai dit à mon avis c'est "by design" que c'est comme ça...
de toutes façons, comme j'ai dit, actuellement ça n'est pas possible facilement

Oui, et "comme j'ai dit" c'est volontaire que ça ne soit pas possible ^^
et puis, pour expliciter que la fonction traite les classes de manière défférente, on pourrait imaginer d'écrire son type en mettant en évidence la disjonction, par exemple
(mother | daughter) -> ()

C'est vrai que ça pourrait être sympa d'avoir un type "somme croissante", de la forme A | B | C avec A<B<C, qui pourrait être considéré de façon transparente comme un #A dans tous les cas, puis par pattern-matching pourrait être séparé en #B / A (ou en #C / B) smile

Parce que là les alternatives c'est :
- représenter ça comme une somme disjointe normale, mais c'est un peu pénible pour utiliser le plus grand sous-type commun (ce qui risque d'être pourtant l'utilisation la plus fréquente)
- représenter ça comme le plus grand sous-type commun, avec un "daughter option" en plus pour les opérations spécifiques aux daughter (mais c'est un peu crade, par exemple ça ne fournit aucune garantie que le daughter serait, s'il est présent, physiquement égal au mother)

BookeldOr :
au fait,
vous avez essayé de typer le prog que j'ai posté un peu plus haut ?
c'est assez marrant tongue

./75 ? confus