O documento apresenta uma introdução à programação funcional com Clojure, descrevendo os principais conceitos como: imutabilidade, funções de alta ordem, closures e currying. O autor explica as diferenças entre paradigma funcional e imperativo, demonstra um "hello world" em Clojure e apresenta alguns recursos básicos como operadores, loops e interação com Java.
2. 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
4. 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?
5. 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
9. 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
14. 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
15. 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
20. 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, ...
21. 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)