Esto es para lo que utiliza la programación de estilo funcional, más o menos a diario.
Hacemos muchas cosas estadísticas y actuariales con conjuntos de datos bastante grandes. Los datos que se obtienen de la base de datos son esencialmente objetos estáticos e inmutables. No hay razón para crear una clase con métodos.
Cada etapa del cálculo agrega algunos detalles adicionales, pero esencialmente no muta el objeto. Al "final" de la tubería, realmente estamos haciendo una reducción elegante para calcular sumas, recuentos y otras cosas.
Imagina esto.
for data in summarize( enrich( calculate( some_query( criteria() ) ) ) ):
print data
Cada "fase" del cálculo es un bucle de programación funcional que realiza una simple lectura-cálculo-rendimiento y crea un objeto compuesto de otras cosas más resultados.
(Usamos Python, de ahí la programación funcional usando las funciones del generador).
Es más fácil usar objetos sin estado e inmutables.
F#
No es totalmente representativo de la programación funcional. Intenta en suClojure
lugar.