Programação
Funcional
Introdução ao paradigma e primeiros passos com
Clojure
Quem sou eu?
➔ Formado no curso técnico de Informática
para Internet no IFRS - Câmpus Rio
Grande
➔ Estudante do terceiro semestre do curso
de Tecnologia em Análise e
Desenvolvimento de Sistemas (TADS) pelo
IFRS
➔ Desenvolvedor .NET na Callidus
Tecnologia
Victor Hechel
O que é
Programação
Funcional?
Paradigma que se inspira na
lógica de funções matemáticas,
possuindo uma alta camada de
abstração e focando mais no “O
que fazer” do que no “Como
fazer”.
O que é
Programação
Funcional?
Imperativo X Funcional
➔ Blocos de instruções
➔ Variáveis variam
➔ Métodos são “imprevisíveis”
➔ Métodos só podem ser
executados
➔ Foca nas instruções
➔ Código separado por
atividades
➔ Variáveis não variam
➔ O retorno da função é fixo
➔ Funções podem trabalhar
como variáveis
➔ Foca nas funções
Imperativo X Funcional
Fundamento Matemático
As funções matemáticas são um
dos pilares do Paradigma
Funcional.
f(x) = x + 2
Fundamento Matemático
As funções matemáticas são um
dos pilares do Paradigma
Funcional.
f(x) = x + 2
f(5) = 5 + 2 = ?
Fundamento Matemático
“Todas” as funções no paradigma
funcional possuem um retorno
que não muda conforme o projeto
está rodando.
f(x) = x + 2
f(5) = 5 + 2 = 7
Paradigma
Imperativo
Paradigma
Imperativo
Paradigma
Imperativo
Paradigma
Funcional
Imutabilidade
➔ Controle maior sobre o estado das variáveis
➔ Facilita o trabalho com multithreading
➔ Auxilia na filosofia das funções retornarem sempre o mesmo valor de
acordo com o parâmetro
➔ Garante que as funções sejam puras
➔ Força o desenvolvimento de funções recursivas
➔ Gasta muito espaço na memória
First-Class and High-Order Functions
➔ First-Class Functions: funções que são tratadas como variáveis.
➔ High-Order Functions: funções que recebem uma função como parâmetro,
ou retorna uma.
➔ Um dos princípios das funções Lambda.
➔ Introdução de estratégias como:
◆ Closures
◆ Currying
Closure
Currying
Currying
Linguagens Funcionais
➔ LISP
➔ Haskell
➔ Clojure
➔ Elixir
➔ Javascript*
➔ Python*
* Não são puramente funcionais
Clojure
➔ Lançada em 2007 por Rich Hickey
➔ Baseada em LISP
➔ Executada pela JVM
➔ Criada pensando em casos de concorrência
➔ Usada em empresas como: Apple, Netflix,
Walmart, Atlassian, NuBank, NASA, ...
Instalação
➔ JDK 8 instalado
➔ Instalar o Leiningen
(https://leiningen.org/)
➔ Executar o comando:
◆ lein repl
➔ Para criar um novo projeto:
◆ lein new app (nome do projeto)
Mind Blown Time
Hello World
Hello World
Operadores
Aritméticos
Operadores
Lógicos
If/Else
Loops
Loops
Lazy Functions
Java Interop
Obrigado pela atenção!
Dúvidas?
Contato: victor.hechel@gmail.com

Introdução à programação funcional com Clojure - Victor Hechel Colares - Tchelinux 2019 Rio Grande