Si je conçois un nouveau langage avec l'inférence de type, aucun type explicite et aucune prise en charge de l'héritage de classe et souhaitez ajouter l'héritage, quelles sont les minimum indications supplémentaires au compilateur résoudre l'ambiguïté de type lors de l'ajout de la fonctionnalité?obtenu l'inférence de type, voulez ajouter l'héritage de classe
Les noms de classe sont-ils nécessaires?
EDIT
Le type-altération est tracée au moyen d'affectations dans tout le programme y compris entre les fonctions.
OK dans la langue de départ, vous avez des noms de classe comme MyTypeName1
de choses comme:
myVariable1 = New(MyTypeName1)
myVariable2 = New(MyTypeName2)
et types MyTypeName1
et MyTypeName2
sont inférées pour myVariable1
et myVariable2
respectivement. Mais si nous voulons améliorer la langue pour soutenir:
MyVariable3 = myVariable1
MyVariable3 = myVariable2
qui peut être tracée à travers le code (myVariable3 peut maintenant contenir deux types qui sont sans doute dans une hiérarchie).
EDIT
Les membres de MyTypeName1 et MyTypeName2 sont déduites des déclarations comme:
myVariable1.name="Fred"
myVariable2.name="JX3009"
si le membre name
dans MyTypeName1
et MyTypeName2
ne doivent pas être dans une classe de base commune? Que faire si nous voulons une propriété de nom différente dans MyTypeName1
et MyTypeName2
et aucune dans une classe de base? Existe-t-il une manière élégante de dire au compilateur quoi faire/comment manipuler? (L'idée avec l'inférence de type est de réduire le typage et non de l'augmenter ...?)
Ou devons-nous spécifier explicitement la hiérarchie?
Question de devoirs? –
Jim: Si c'est le cas, je suis content que ce ne soit pas mes devoirs, parce que je me bats vraiment pour savoir de quoi il parle :) –
C'est un plaisir de te faire chier messieurs. :) – martinr