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?

Armand
la source

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.

Kevin Cline
la source
Serait -1 si j'avais suffisamment de représentants, voir plus loin dans le lien OP: programmers.stackexchange.com/questions/116395/…
sq33G