Use o código e tenha 10% de desconto!

OCaml Programação funcional na prática

Andrei de Araújo Formiga

Conteúdo

Programação funcional é um assunto cada vez mais frequente entre desenvolvedores. Seja porque linguagens tradicionais como Java, C++ e C# ganham mais características funcionais a cada versão, seja porque muitas novas linguagens que têm surgido (Swift da Apple, Rust da Mozilla, Hack do Facebook) mostram uma forte influência da programação funcional, o fato é que a programação funcional, antes considerada restrita à academia, se torna cada vez mais parte do dia a dia dos desenvolvedores de todos os tipos e plataformas. Além dos benefícios abstratos de aprender um novo paradigma de programação, aprender programação funcional também serve como preparação para se atualizar nas linguagens mais tradicionais e para aprender as novas linguagens que estão aparecendo.

Entre as linguagens funcionais, OCaml é uma ótima opção para começar no paradigma. Programas escritos em OCaml são compilados para código rápido (próximo do desempenho de C e C++), mas a linguagem é expressiva e de alto nível, similar a linguagens como Python e Ruby. O sistema de tipos da linguagem OCaml é muitas vezes citado como um bom exemplo de tipagem estática; é poderoso, permitindo expressar ideias e restrições complexas com tipos, mas, ao mesmo tempo, não obriga o programador a declarar os tipos das variáveis. OCaml também inclui tipos de dados algébricos e pattern matching, duas características que, quem se acostuma a usar, passa a achar indispensáveis em qualquer linguagem. Ele também possibilita o uso de características imperativas, facilitando a transição para quem não tem experiência prévia com programação funcional, reduzindo o tempo necessário para se tornar produtivo na linguagem.

Este livro tem como objetivo ensinar os fundamentos da programação funcional, e, ao mesmo tempo, tornar o leitor competente na linguagem OCaml, capacitando-o a ler a maior parte do código open source disponível na linguagem e a criar seus próprios projetos com ela.

 

Sumário

  • 1 Introdução
  • 1.1 Por que programação funcional?
  • 1.2 Características de OCaml
  • 1.3 Por que OCaml?
  • 1.4 Usos e aplicações
  • 1.5 O sistema OCaml
  • 1.6 Organização do livro
  • 2 Tipos e valores básicos
  • 2.1 Primeiros passos
  • 2.2 Variáveis e tipos básicos
  • 2.3 Funções
  • 2.4 Tipos agregados
  • 3 Registros e variantes
  • 3.1 Sinônimos de tipos
  • 3.2 Registros
  • 3.3 Variantes simples
  • 3.4 Variantes com valores associados
  • 3.5 Tipos recursivos
  • 3.6 Árvores
  • 4 Polimorfismo e mais padrões
  • 4.1 As listas predefinidas
  • 4.2 Mais sobre padrões
  • 4.3 Árvores polimórficas e valores opcionais
  • 5 Programação funcional
  • 5.1 A essência da programação funcional
  • 5.2 Mutabilidade e outros efeitos
  • 5.3 Programação recursiva
  • 5.4 Funções de primeira classe
  • 5.5 Padrões de recursividade
  • 5.6 Tipos como fonte de informação
  • 5.7 Dois operadores para aplicar funções
  • 5.8 Funções de alta ordem em árvores
  • 6 Exemplo: interpretador e compilador
  • 6.1 Expressões aritméticas
  • 6.2 Interpretação
  • 6.3 Uma máquina de pilha
  • 6.4 Compilação
  • 6.5 Otimização
  • 7 Características imperativas
  • 7.1 O tipo unit
  • 7.2 Entrada e saída
  • 7.3 Sequenciamento de expressões
  • 7.4 Atualização funcional de registros
  • 7.5 Registros com campos mutáveis
  • 7.6 Referências
  • 7.7 Arrays
  • 7.8 Estruturas de controle imperativas
  • 7.9 Exceções
  • 8 Módulos
  • 8.1 Estruturas e assinaturas
  • 8.2 Acesso aos itens de um módulo
  • 8.3 Módulos e arquivos
  • 8.4 Funtores
  • 8.5 Extensão de estruturas e assinaturas
  • 8.6 Módulos de primeira classe
  • 9 Exemplo: árvores de decisão
  • 9.1 O problema do Titanic
  • 9.2 Um pouco sobre aprendizado de máquina
  • 9.3 Inferência de árvores com ID3
  • 10 Parâmetros rotulados
  • 10.1 Rótulos para nomear parâmetros
  • 10.2 Parâmetros opcionais
  • 10.3 Inferência de tipos e funções de alta ordem
  • 10.4 Sugestões para o bom uso de rótulos
  • 11 Variantes polimórficas e extensíveis
  • 11.1 Limitações dos tipos variantes
  • 11.2 Variante polimórficas
  • 11.3 Variantes extensíveis
  • 11.4 Variantes de tipos variantes
  • 12 Um pouco sobre objetos
  • 12.1 Objetos
  • 12.2 Classes
  • 13 Organização de projetos e testes
  • 13.1 Organização do projeto com OASIS
  • 13.2 Testes com OUnit

veja mais detalhes

Autor

Andrei de Araújo Formiga

Andrei de Araújo Formiga é professor no Centro de Informática da Universidade Federal da Paraíba, mas jura que ainda sabe programar. Apaixonou-se pela programação ainda cedo e nunca a deixou, embora, às vezes, seja um relacionamento à distância por conta de outras obrigações. Porém, o reencontro é sempre emocionante.
Suas áreas de interesse como professor, pesquisador e eventual hacker da Torre de Marfim incluem tudo sobre linguagens de programação (teoria, semântica, implementação etc.). Recentemente, tem interessado-se muito por aprendizado de máquina e temas relacionados, mas também diverte-se lendo livros de matemática e textos escritos por Knuth.
Seu site está localizado em http://andreiformiga.com.

Dados do produto

Número de páginas:
307
ISBN:
978-85-5519-070-4

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter