design patterns - Patrones de empresa con programación funcional
design-patterns functional-programming (1)
Estoy pidiendo un recurso análogo desde un paradigma más funcional orientado a aplicaciones empresariales.
No hay ningún recurso que yo sepa. El uso empresarial a gran escala de la PF moderna a menudo es <10 años, por lo que los recursos tienden a estar en forma de Internet. Además, muchas personas evitan que el GdF sea en gran medida irrelevante para la PF.
SO sigue siendo su mejor apuesta (aquí hay un ejemplo: https://stackoverflow.com/a/3077912/83805 ). Sin embargo, hay un mercado para un libro de arquitecturas de FP, eso es seguro.
Editorial
En mi experiencia, casi todos los diseños caen en el patrón de "compilador" o "intérprete", usando un modelo de los datos y funciones de esos datos. Es decir, los dominios problemáticos se representan como estructuras algebraicas (objetos como ADT con funciones sobre ellos) y las arquitecturas de software tratan sobre la asignación de un álgebra a otra. Este es el patrón de diseño de la "teoría de categoría" (!)
Nuestros tipos de datos algebraicos son la mejor forma de capturar estructuras. Las funciones son la mejor manera de transformar estas estructuras, o asignarlas a nuevos tipos de estructuras. Y hay muchas investigaciones sobre cómo escribir compiladores e intérpretes que hacen que todo esto sea fácil. Puede implementar la mayoría de los sistemas escribiendo un compilador (o intérprete). Así que aprende a escribir compiladores.
Es bastante sorprendente la cantidad de cosas que caen como intérpretes o compiladores, cuando comienzas a buscar estos problemas de software "categóricos". Cosas como MVC se caen como intérpretes. Una gran cantidad de software empresarial (munging de datos) se convierte en analizador + análisis + impresora bonita, es decir, un compilador. Tal vez es obvio que las arquitecturas (es decir, cómo pegar los componentes) se trata realmente de álgebras y categorías.
Obviamente, esto se trata de arquitecturas de alto nivel. Las cosas de nivel inferior, como la mejor forma de implementar un sistema de registro, o la mejor forma de cablear los componentes caros, cómo pasar entornos, la reproducción / reversión tienen abstracciones particulares que puede reutilizar son un problema diferente. A menudo monoids / monads / applicatives u otras nociones computacionales capturadas como bibliotecas.
Sin embargo, una vez más, vamos a la vista algebraica para encontrar la estructura que mejor capture el dominio del problema.
¿Hay alguna buena fuente de información (centralizada) sobre los patrones de la arquitectura empresarial ( al estilo de los Fowler), tal vez con ejemplos y casos de uso y una buena cantidad de información práctica? Por ejemplo, he visto muchos de los patrones de diseño de GoF, que se explican brevemente en algunas publicaciones de SO y en otros sitios, así como información práctica relacionada con ellos. Estoy pidiendo un recurso análogo desde un paradigma más funcional orientado a aplicaciones empresariales.
Gracias.