Padrões Funcionais para Meros Mortais

2021-12-29

Não existe muito essa coisa de "padrões de design/organização de código" em linguagens de programação funcionais, ou linguagens de programação em geral. A única premissa de linguagens de programação funcionais é elevar o status de uma função ao mais alto patamar.

Linguagens de programação funcionais também implementam outras coisas legais, como pattern matching, tipagem dependente, tipagem de alta ordem, definição parcial automática de funções e vários outros goodies. Dependendo da linguagem de programação que tu trabalha, tu vai ter acesso a ferramentas diferentes. Dependendo do caso tu também vai perder acesso a mecanismos e abstrações que são bem convenientes.

Classes, por exemplo, são mecanismos bem convenientes para definir algo que agrega dados e comportamentos em cima dos dados (pelo menos nas implementações mais comuns do mecanismo de classes).

Por outro lado, quando uma linguagem de programação não tem suporte a esse tipo de abstração, a necessidade de implementar comportamentos (régras de negócio) talvez, possa levar o design do código para o mundo "orientado a dados" (pesquise sobre data-driven programming).

Isto posto, ao longo da minha carreira já notei, aprendi e implementei algumas coisas que são mais pro lado de linguagens funcionais, mas que também podem ser usados em linguagens não-funcionais, dadas as devidas adaptações.

##State Transformer

Redescobri esse padrão ao ler o capítulo

##Reducer

##Processamento preguiçoso

##Tipos

#javascript#functionalprogramming