Pregunta

Esto puede ser un oxímoron, pero ¿cómo se actualizaría una entidad de datos en el estilo de programación funcional? De todo lo que he leído, la programación de estilo funcional utiliza transformaciones para devolver una salida en entidades inmutables. Lo único que se me ocurre sería reemplazar completamente la entidad original, pero eso parece casi lo mismo que un enfoque de actualización clásico.

¿Fue útil?

Solución

¿Está hablando de entidades de bases de datos en disco o estructuras de datos en la memoria?

Para este último, los lenguajes funcionales utilizan estructuras de datos persistentes, que se implementan de manera tal que la nueva versión y la versión anterior estén disponibles después de la actualización, pero comparten partes comunes (para que sea eficiente). Parece que está devolviendo una estructura de datos totalmente nueva, pero de hecho, comparte la mayor parte de su implementación con la que estaba modificando.

Hay algunas implementaciones realmente buenas para ver en la fuente de clojure (escrita en Java): separé dos de ellas en mi blog

http: //www.loufranco .com / blog / files / 20-Days-of-Clojure-Day-7.html

http: //www.loufranco .com / blog / files / 20-Days-of-Clojure-Day-8.html

Otros consejos

Lou Franco lo tiene. Las estructuras de datos en lenguajes funcionales se implementan de tal manera que para modificarlas, usted '' reemplaza completamente '' La entidad original. Detrás de escena, todavía usan la mayor parte del anterior: simplemente reemplazan los bits cambiados. La versión anterior todavía existe, pero la recolección de basura eventualmente la destruirá siempre y cuando nadie la haga referencia.

La respuesta breve es que, en el estilo funcional, cada entidad de datos sería inmutable, por lo que una actualización es realmente una nueva entidad de datos con el valor actualizado, algo así como el funcionamiento de las cadenas en .NET.

Los desafíos realmente interesantes surgen cuando se trata de E / S, se hace difícil modelar E / S de una manera puramente funcional que conduce a soluciones como Mónadas .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top