Estructuras de datos persistentes en Scala
¿Todas las estructuras de datos inmutables en Scala son persistentes? Si no, ¿cuáles son y cuáles no? ¿Cuáles son las características de comportamiento de los que son persistentes? Además, ¿cómo se comparan con las estructuras de datos persistentes en Clojure?
4 answers
Las estructuras de datos inmutables de Scala son todas persistentes, en el sentido de que el valor antiguo se mantiene mediante una operación `update'. De hecho, no conozco una diferencia entre inmutable y persistente; para mí los dos términos son alias.
Dos de las estructuras de datos inmutables 2.8 de Scala son vectores y intentos de hash, representados como árboles de 32 arios. Estos fueron diseñados originalmente por Phil Bagwell, que estaba trabajando con mi equipo en EPFL, luego adoptados para Clojure, y ahora finalmente adoptados para Scala 2.8. La implementación de Scala comparte una raíz común con la implementación de Clojure, pero ciertamente no es una adaptación de la misma.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-24 08:43:18
Por favor, echa un vistazo a estos excelentes artículos de Daniel Spiewak:
http://www.codecommit.com/blog/scala/implementing-persistent-vectors-in-scala
http://www.codecommit.com/blog/scala/more-persistent-vectors-performance-analysis
También se refiere a la implementación de Clojure.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-24 05:17:25
Lista, Vector, HashMap y HashSet son todos persistentes en Scala 2.8. Hay otras estructuras de datos persistentes, pero estas cubren todos los usos principales, no estoy seguro de que tenga sentido enumerarlas todas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-24 15:15:52
Para la última parte de su pregunta, recuerdo que Rich Hickey mencionó en una presentación que las estructuras de datos Clojure han sido portadas a Scala. Además, Michael Fogus menciona planes para Scala 2.8 para adoptar algunas de las estructuras de datos de Clojure en esta entrevista .
Lo sentimos, esto es tan corto en detalles... No estoy seguro de cuál es el estado de los planes de Scala 2.8 mencionados anteriormente, pero recordé a Rich y Michael mencionando esto y pensé que podría ser una cosa interesante para usted a Google por si estás interesado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-06-24 04:38:20