Groovy suit-il le principe de correspondance de Tennent?


15

Voici une discussion intéressante sur le principe de correspondance de Tennent , et une brève description de Neal Gafter :

Le principe veut qu'une expression ou une déclaration, lorsqu'elle est enveloppée dans une fermeture puis invoquée immédiatement, ait la même signification qu'avant d'être enveloppée dans une fermeture. Tout changement de sémantique lors de l'encapsulation de code dans une fermeture est probablement une faille dans le langage.

La langue Groovy suit-elle ce principe?

Réponses:


4

Pas tout à fait, mais presque. Toutes les variables accessibles dans la portée externe sont accessibles dans la fermeture, y compris «this» et les membres de données de classe. Cependant, une returninstruction revient de la fermeture, pas de la fonction englobante. Je ne suis même pas sûr que ce soit une violation de TCP; Je ne connais aucun langage de style C où returndans une fermeture revient de la portée englobante. Je n'ai eu aucune surprise en utilisant les fermetures Groovy.


Serait -1 si j'avais suffisamment de représentants, voir plus loin dans le lien OP: programmers.stackexchange.com/questions/116395/…
sq33G
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.