¿Hay alguna diferencia en una estructura de datos persistente e inmutable? Wikipedia se refiere a la estructura de datos inmutables cuando se habla de persistencia, pero tengo la sensación de que podría haber una sutil diferencia entre los dos.estructura de datos persistente vs inmutable
Respuesta
La inmutabilidad es una técnica de implementación. Entre otras cosas, proporciona persistencia, que es una interfaz. La API de persistencia es algo así como:
version update(operation o, version v)
realiza la operacióno
en la versiónv
, el retorno de una nueva versión. Si la estructura de datos es inmutable, la nueva versión es una nueva estructura (que puede compartir partes inmutables de la estructura anterior). Si la estructura de datos no es inmutable, la versión devuelta puede ser simplemente un número de versión. La versiónv
sigue siendo una versión válida, y no debe cambiar en ningún modoobserve
-able debido a esta actualización: la actualización solo es visible en la versión devuelta, no env
.data observe(query q, version v)
observa una estructura de datos en la versiónv
sin cambiarla o crear una nueva versión.
Para más información sobre estas diferencias, consulte:
Sí, hay una diferencia. Una estructura de datos inmutables no se puede modificar de ninguna manera después de su creación. La única forma de modificarlo eficazmente sería hacer una copia mutable o algo similar (por ejemplo, modificando ligeramente los parámetros que pasa al constructor del nuevo). Una estructura de datos persistente, por otro lado, es mutable en el sentido de que la API expuesta parece permitir cambios en la estructura de datos. En verdad, sin embargo, cualquier cambio retendrá un puntero a la estructura de datos existente (y por lo tanto a cada estructura anterior); solo parecen mutar la estructura de datos porque la API expuesta devuelve un nuevo puntero que puede incluir punteros a un subconjunto de la estructura de datos previa (en los árboles, por ejemplo, apuntarmos al nodo cuyo subárbol no ha cambiado como resultado de la operacion).
- 1. programación funcional: inmutable eficiencia de la estructura de datos
- 2. Persistente vs no persistente - ¿Qué debería usar?
- 3. Implementación de una estructura de datos de diccionario funcional/persistente
- 4. Clase vs estructura de datos
- 5. Java: ¿gran estructura hash persistente?
- 6. ¿Hay una estructura de datos persistente multimap bidireccional?
- 7. Inmutable vs Mutable C#
- 8. "estado persistente" vs. "estado actual"
- 9. enumeración vs inmutable en D
- 10. Python scoping mutable vs inmutable
- 11. Cola inmutable en Clojure
- 12. Scala: Mutable vs. Inmutable Object Performance - OutOfMemoryError
- 13. Asignación de una estructura inmutable como componente en NHibernate
- 14. Clase VS ref. Estructura
- 15. ¿Cómo construir una estructura de datos compleja, jerárquica e inmutable en Java?
- 16. ¿Cómo "enlazar" una estructura de datos persistente a una GUI en Scala?
- 17. HTTP conexión persistente vs conexión de socket TCP
- 18. Estructura anulable vs clase
- 19. Almacenamiento persistente de datos cifrados usando .Net
- 20. mutable vs. inmutable en las colecciones de Scala
- 21. ¿la mejor estructura de datos para datos multidimensionales?
- 22. Estructura de datos para datos espaciales
- 23. Hashable, inmutable
- 24. Estructura vacía en C vs estructura vacía en C++
- 25. "Sobrecarga" de Clase vs Estructura en C#?
- 26. PCAP estructura pcap_pkthdr len vs Caplen
- 27. Estructura de datos en evolución
- 28. RESTful estructura de datos patrones
- 29. Java pregunta estructura de datos
- 30. java.util.Stack estructura de datos adecuada?
Si usted tiene un totalmente persistente mapa de estructura de datos, y que ya ha configurado (1, 1), si establece (1, 1) de nuevo, ¿esto se considera una mutación y debería devolver una nueva versión de la estructura de datos? es si nada ha cambiado realmente? – CMCDragonkai
@CMCDragonkai, no creo que haya una sola respuesta "correcta" a esa pregunta. – jbapple