Ir para o conteúdo

Apresentação

O paradigma de funcional é um dos muitos paradigmas de programação disponíveis e, uma vez que você tenha sido "contaminado" pelos outros, certamente não é o mais simples de se entender. Ainda assim, é um paradigma que deve ser estudado pois seus pontos fortes tem sido incorporados cada vez mais frequentemente em frameworks e linguagens não necessariamente reconhecidos como funcionais. Por isso, neste curso estudaremos o paradigma funcional de uma forma prática, tentando sempre que possível mostrar diversas aplicações das ideias apresentadas no mundo da programação moderna.

Agradecimentos

Antes de começarmos nosso estudo, deixo aqui o meu agradecimento aos professores da Faculdade de Computação da UFU que forneceram o material sobre o qual a primeira versão destas notas de aula foram baseadas: Profa. Gina Maira B. Oliveira, Profa. Maria Adriana Vidigal de Lima, e Prof. Henrique Fernandes.

Convenções

Neste documento, usamos diversos recursos visuais com diferentes propósitos.

  • itálico indica termos em outras línguas, como framework ou middleware. Alguns termos, contudo, são tão corriqueiramente usados que me escapam quando escrevendo e acabam não grafados corretamente.
  • negrito indica a introdução de termos e conceitos importantes, como mônada e função de ordem superior.
  • Apontadores indicam um sítio relacionado ao termo, por exemplo, como criar um repositório no Github. A leitura dos conteúdos apontados é sugerida ao final da aula.
  • Notas de rodapé1 indicam referenciais teóricos importantes, com detalhes da publicação e apontadores para onde a publicação pode ser lida. Elas serão, em algum momento, substituídas por referências formais.
  • Imagens não autorais são também apontadores para a fonte e tem como texto alternativo as informações da autoria.
  • Caixas alinhadas à esquerda são usadas para várias finalidades. Por exemplo, para apresentar exercícios, destacar especificações, apontar tarefas a serem executas por mim. Os diversos usos são indicados nos ícones e cores das caixas.

Exercício

Isso é um exercício!

Resposta

Esta é a resposta do exercício.

Aviso!

Este material está em constante evolução.

Resumo
  • Elementos visuais
  • Caixas alinhadas à direita podem ser vistas como um sumário executivo do que está sendo apresentado no texto adjacente.

Exemplos de código são colocados tanto diretamente dentro de linhas, como em somar x y = x + y quando em blocos separados, se mais longos.

somar :: Int -> Int -> Int
somar x y = x + y

Exemplos de invocações de funções são apresentados também como blocos, em que entradas são precedidas por > mas não as saídas.

> somar 3 4
7
> 3 + 4
7

O resultado da computação de uma função é apontado por , por exemplo, 1+1 ⭆ 2.

Referências

Esta é uma lista não exaustiva de referencial teórico. Esta lista será aumentada com o ponteiro de entrada para o material. Referências a tópicos específicos são apresentadas nas seções onde são usadas, como notas de rodapé.

TODO

Esta sessão documenta o conteúdo presente e a ser adicionado nestas notas de aula, sendo principalmente para a minha própria referência. A ordem não reflete a ordem de apresentação.


  1. Exemplo de nota de rodapé.