¿Cuál es la diferencia entre programación funcional relacional y programación funcional?

Respuestas:

8

La programación relacional funcional parece ser, como su nombre lo indica, una combinación de la programación funcional y el modelo relacional. Creo que esta oración lo resume bastante (p. 42):

En FRP, todo estado esencial toma la forma de relaciones, y la lógica esencial se expresa usando álgebra relacional extendida con funciones definidas por el usuario (puro).

La programación funcional elimina el estado de la ecuación y trata solo con funciones puras (sin efectos secundarios). Se supone que esto facilita las cosas a todos al evitar que se oculte la manipulación de datos, por lo que es más fácil razonar sobre el programa. FP es un hermoso ideal, pero en las aplicaciones de la vida real el estado es necesario y a menudo útil. Por supuesto, es posible tener estado en FP, solo que está un poco más involucrado.

Basado en un rápido vistazo al documento, parece que están tratando de simplificar la PF al permitir el estado de una manera estrictamente controlada. Los datos relacionales están bien estructurados y son fáciles de razonar, y los programas funcionales son fáciles de razonar (tal vez no en el sentido humano), así que aumentemos la FP con R y hagamos que la vida de todos los amantes del estado sea más fácil.

axblount
fuente
Gracias por la respuesta. Suena como es lo que esperaba, no realmente significativamente diferente de FP. Lo que no pude entender fue por qué mucha gente estaba implementando sus propias herramientas FRP, en lugar de simplemente extender un lenguaje FP.
@MattFenwick ¿Estás seguro de que tienes la "R" correcta aquí? También existe la Programación Reactiva Funcional , que también se abrevia comúnmente como FRP, y también es una especialización de FP, pero no tiene ninguna relación con el álgebra relacional. Hay muchas implementaciones independientes / especializadas de FR (eactive) P, pero nunca antes había oído hablar de FR (elational) P.
Ptharien's Flame
@ Flame sí, estoy seguro. Vea el documento vinculado para más detalles.
Un lenguaje muy interesante para analizar es Opa , un lenguaje funcional que ofrece un estado mutable vinculado a registros de bases de datos (relacionales o de documentos), una sintaxis de consulta muy directa y un sistema de tipos extremadamente potente. No es un lenguaje funcional-relacional per se, pero podría ser un lenguaje adecuado para ejercitar la idea de la programación funcional-relacional. (no se deje engañar por cómo esto se califica como un "marco de JavaScript" - es un lenguaje compilado y único a diferencia de cualquier otra cosa que haya visto).
mindplay.dk
PD: gracias @axblount, ¡esta es una respuesta absolutamente hermosa!
mindplay.dk