¿Existe una metodología de ingeniería de software para la programación funcional? [cerrado]

La ingeniería de software, tal como se enseña hoy, se centra por completo en la programación orientada a objetos y la visión del mundo "natural" orientada a objetos. Existe una metodología detallada que describe cómo transformar un modelo de dominio en un modelo de clase con varios pasos y muchos artefactos (UML) como diagramas de casos de uso o diagramas de clases. Muchos programadores han internalizado este enfoque y tienen una buena idea sobre cómo diseñar una aplicación orientada a objetos desde cero.

El nuevo bombo es la programación funcional, que se enseña en muchos libros y tutoriales. Pero, ¿qué pasa con la ingeniería de software funcional? Mientras leía sobre Lisp y Clojure, descubrí dos declaraciones interesantes:

Los programas funcionales a menudo se desarrollan de abajo hacia arriba en lugar de de arriba hacia abajo ('On Lisp', Paul Graham)

Los programadores funcionales usan mapas donde los programadores OO usan objetos / clases ('Clojure for Java Programmers', charla de Rich Hickley).

Entonces, ¿cuál es la metodología para un diseño sistemático (basado en el modelo) de una aplicación funcional, es decir, en Lisp o Clojure? ¿Cuáles son los pasos comunes, qué artefactos utilizo, cómo los mapeo desde el espacio del problema al espacio de la solución?

Respuestas a la pregunta(13)

Su respuesta a la pregunta