Une fois de temps en temps, je tombe sur la notion que la R a copie sur modifier la sémantique, par exemple dans Hadley du devtools wiki.
La plupart des objets R de la fonction de copier-sur-modifier la sémantique, de sorte que la modification d'une fonction l'argument ne change pas la valeur d'origine
Je peux tracer ce terme de retour à la R-Aider à la liste de diffusion. Par exemple, Peter Dalgaard a écrit en juillet 2003:
R est un langage fonctionnel, avec lazy de l'évaluation et de la faiblesse de la dynamique de frappe (une variable peut changer de type à volonté: a <- 1 ; a <- "a" est autorisé). Sémantiquement, tout est copie sur modifier bien que certains l'optimisation des trucs sont utilisés dans la mise en œuvre pour éviter le pire les inefficacités.
De même, Peter Dalgaard a écrit dans Jan 2004:
R a copie sur modifier la sémantique (en principe, et parfois dans la pratique) donc, une fois que la partie d'un objet change, vous pourriez avoir à regarder dans de nouveaux endroits pour tout ce qu'il contenait, y compris, éventuellement, la objet lui-même.
Encore plus en arrière, en Février 2000 Ross Ihaka dit:
Nous avons mis un peu de travail dans la réalisation de cet objectif. Je décrirais la sémantique comme "copie sur modifier (si nécessaire)". La copie est fait seulement, lorsque les objets sont modifiés. L' (si nécessaire) la partie qui signifie que si nous pouvons prouver que la modification ne peut pas changer les non-local variables, alors nous avons simplement aller de l'avant et de le modifier sans avoir à les copier.
Il n'est pas dans le manuel
N'importe comment dur j'ai cherché, je ne peux pas trouver une référence à "copier-sur-modifier" dans la R manuels, ni dans la R de Définition de Langage , ni dans R Internals
Question
Ma question est en deux parties:
- Où est-ce que formellement documentés?
- Comment copier-sur-modifier le travail?
Par exemple, est-il correct de parler de "par référence", car une promesse est transmis à la fonction?