Manipulando Alterações Incrementais da Modelagem de Dados na Programação Funcional

A maioria dos problemas que tenho que resolver no meu trabalho como desenvolvedor tem a ver com modelagem de dados. Por exemplo, em um mundo de aplicativos da Web OOP, geralmente tenho que alterar as propriedades de dados que estão em um objeto para atender a novos requisitos.

Se tiver sorte, nem preciso adicionar programaticamente novo código de "comportamento" (funções, métodos). Em vez disso, posso adicionar validação declarativa e até opções de interface do usuário anotando a propriedade (Java).

Em Programação Funcional, parece que adicionar novas propriedades de dados requer muitas alterações de código devido à correspondência de padrões e aos construtores de dados (Haskell, ML).

Como minimizo esse problema?

Este parece ser um problema reconhecido comoXavier Leroy afirma muito bem na página 24 de "Objetos e classes vs. módulos" - Para resumir para aqueles que não têm um visualizador PostScript, basicamente dizOs idiomas FP são melhores que os idiomas OOP para adicionar novo comportamento sobre objetos de dados, mas os idiomas OOP são melhores para adicionar novos objetos / propriedades de dados.

Existe algum padrão de design usado nas linguagens FP para ajudar a mitigar esse problema?

Eu li o livro de Phillip Wadlerrecomendação de usar Mônadas para ajudar nesse problema de modularidade, mas não sei ao certo como?

questionAnswers(5)

yourAnswerToTheQuestion