Programação Funcional em Go (Golang)
Programação Funcional em Go (Golang)
Resumo:
Este livro é um guia prático para a implementação do paradigma de programação funcional (PF) no ecossistema Go. Diferente de Haskell ou Scala, Go não é uma linguagem puramente funcional, mas seus recursos poderosos (closures, funções de primeira classe, interfaces) permitem aplicar com sucesso os princípios-chave da PF para criar código mais previsível, testável e seguro para concorrência.
Sobre o livro
O livro apresenta ao leitor, de forma sequencial, os conceitos fundamentais da PF e mostra como implementá-los em Go:
- Funções puras e imutabilidade: como evitar efeitos colaterais, tornar o código determinístico e facilmente testável.
- Funções de ordem superior: map, filter, reduce para slices e canais.
- Closures e currying: criação de fábricas de funções e aplicação parcial de argumentos.
- Composição de funções: construção de pipelines de processamento de dados sem chamadas aninhadas.
- Tratamento de erros com mônadas: alternativa ao clássico
if err != nil— padrões Maybe (Option) e Either. - Lazy evaluation e sequências infinitas: trabalho eficiente com grandes volumes de dados.
- Paralelismo e abordagem funcional: uso de canais e goroutines no estilo funcional.
Para quem é este livro
- Desenvolvedores Go com pelo menos 1 ano de experiência que desejam escrever código mais limpo e declarativo.
- Programadores familiarizados com PF em outras linguagens que buscam analogias em Go.
- Arquitetos que buscam reduzir o número de estados e mutações em microsserviços.
O que você aprenderá
- Como escrever funções sem efeitos colaterais e gerenciar estado através de closures.
- Como substituir loops por recursão e funções de ordem superior.
- Como construir cadeias de operações usando composição e o padrão "Pipeline".
- Como tratar erros sem verificações aninhadas, usando a abordagem monádica.
- Como projetar APIs resilientes a mudanças e facilmente testáveis.
Todos os exemplos de código foram testados no Go 1.21+ e são acompanhados de testes. O livro contém templates prontos para projetos reais: desde o processamento de requisições HTTP até o trabalho com bancos de dados no estilo funcional.
Ideal para quem deseja ir além da programação imperativa e alcançar um novo nível de abstração em Go.