Ceci dit le titre du thread est : Et le Troll, il arrive quand ?. Comme Nicolas Raynaud semble vouloir un troll, je fournis un sujet possible.
Ca fait deux ans que j'utilise Eiffel au travail, et le problème de la covariance / contravariance ne s'est jamais posé pour moi. Ce sont, à ma connaissance, les fondateurs de Sather, langage issu de Eiffel, qui ont prétendu que l'utilisation de la contravariance renforçait la sécurité du code. L'exemple que je fournis plus haut montre que cela pose problème avec un cas trivial : si l'argument de la comparaison avec l'objet courant ne peut pas varier dans le même sens que celui-ci, la comparaison (est-ce que cet objet est égal à l'objet courant ?) ne fonctionne plus avec les héritiers. Il va de soi que la bonne manière de déclarer l'argument de la fonction est :
is_equal (other: like Current): BOOLEAN is require préconditions do ensure postconditions end
Ceci évitant d'avoir à redéfinir la comparaison pour les héritiers.
[^] # Re: Et le Troll, il arrive quand ?
Posté par Philip Marlowe . En réponse à la dépêche Une nouvelle version stable de SmartEiffel. Évalué à 1.
Ceci dit le titre du thread est : Et le Troll, il arrive quand ?. Comme Nicolas Raynaud semble vouloir un troll, je fournis un sujet possible.
Ca fait deux ans que j'utilise Eiffel au travail, et le problème de la covariance / contravariance ne s'est jamais posé pour moi. Ce sont, à ma connaissance, les fondateurs de Sather, langage issu de Eiffel, qui ont prétendu que l'utilisation de la contravariance renforçait la sécurité du code. L'exemple que je fournis plus haut montre que cela pose problème avec un cas trivial : si l'argument de la comparaison avec l'objet courant ne peut pas varier dans le même sens que celui-ci, la comparaison (est-ce que cet objet est égal à l'objet courant ?) ne fonctionne plus avec les héritiers. Il va de soi que la bonne manière de déclarer l'argument de la fonction est :
is_equal (other: like Current): BOOLEAN is require préconditions do ensure postconditions end
Ceci évitant d'avoir à redéfinir la comparaison pour les héritiers.