SlideShare uma empresa Scribd logo
Programação Funcional
em Haskell
1a Reunião — Apresentação
Conteúdo e objetivos
 Introdução à programação funcional usando Haskell
 Objetivos de aprendizagem
 Apresentar funções algumas funções da linguagem haskell;
 Definir funções usando equações com padrões e guardas;
 Implementar algoritmos recursivos elementares;
Funcionamento
 Reuniões 2 x 2 h por semana
 Página web Learn you a Haskell for great good!
http://learnyouahaskell.com/
http://haskell.tailorfontela.com.br/introduction
O que é a programação
funcional?
 É um paradigma de programação
 No paradigma imperativo, um programa é uma sequência
de instruções que mudam células na memória
 No paradigma funcional, um programa é um conjunto de
definições de funções que aplicamos a valores
 Exemplos de linguagens: Scheme, ML, O’Caml, Haskell, F#,
Scala, Lisp
Exemplo: somar os naturais de 1 a
10
 Em linguagem C:
total = 0;
for (i=1; i<=10; ++i)
total = total + i;
 O programa é uma sequência de instruções
 O resultado é obtido por mutação das variáveis i e total
Exemplo: somar os naturais de 1 a
10
 Em Haskell:
sum [1..10]
 O programa consiste na aplicação da função sum à lista dos
inteiros entre 1 e 10.
Vantagens da programação
funcional
 Nível mais alto
Programas mais concisos
 Concorrencia/paralelismo
A ordem de execução não afeta os resultados
Desvantagens da programação
funcional
 Maior distância do hardware
Compiladores/interpretadores mais complexos;
Difícil prever os custos de execução (tempo/espaço);
Haskell no mundo real
 Algumas exemplos open-source:
GHC o compilador de Haskell é escrito em Haskell (!)
Darcs um sistema distribuido para gestão de
código-fonte
Haskell no mundo real
 Utilizações em backend de aplicações web:
Bump mover ficheiros entre smartphones
http://devblog.bu.mp/haskell-at-bump
Janrain plataforma de user management
http://janrain.com/blog/
functional-programming-social-web
Chordify extração de acordes musicais
http://chordify.net
Mais exemplos:
http://www.haskell.org/haskellwiki/Haskell_in_industry
Glasgow Haskell Compiler (GHC)
 Compilador que gera código-máquina nativo
 Suporta Haskell 98, Haskell 2010 e bastantes extensões
 Inclui também o interpretador ghci.
 Disponível em http://www.haskell.org/ghc
Algumas funções
> head [1,2,3,4] obter o 1o elemento
1
> tail [1,2,3,4] remover o 1º elemento
[2,3,4]
> length [1,2,3,4,5] comprimento
5
> take 3 [1,2,3,4,5] obter um prefixo
[1,2,3]
> drop 3 [1,2,3,4,5] remover um prefixo
[4,5]
Algumas funções
> [1,2,3] ++ [4,5] concatenar
[1,2,3,4,5]
> reverse [1,2,3,4,5] inverter
[5,4,3,2,1]
> [1,2,3,4,5] !! 3 indexação
4
> sum [1,2,3,4,5] soma dos elementos
15
> product [1,2,3,4,5] produto dos elementos
120
Comandos úteis do interpretador
GHCi
:load fich carregar um ficheiro
:reload re-carregar modificações
:edit editar o ficheiro actual
:set editor prog definir o editor
:type expr mostrar o tipo duma expressão
:help obter ajuda
:quit terminar a sessão
 Podem ser abreviados, :l em vez de :load.
Indentação
Todas as definições num mesmo âmbito devem começar na
mesma coluna.
a = 1 a = 1 a = 1
b = 2 b = 2 b = 2
c = 3 c = 3 c = 3
ERRADO ERRADO OK
A ordem das definições não é relevante.
Comentários
Simples: começam por -- até ao final da linha
Geral: delimitados por {- e -}
-- média de dois valores
media x y = (x+y)/2
{- ** as definições seguintes estão comentadas **
dobro x = x+x
quadrado x = x*x
-}.

Mais conteúdo relacionado

PDF
PDF
Haskell
PDF
Ruby & Rails
PPT
Seminario haskell
ODP
Paradigma funcional
PDF
PDF
Serversidephp pptx2-120418140114-phpapp01
PDF
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...
Haskell
Ruby & Rails
Seminario haskell
Paradigma funcional
Serversidephp pptx2-120418140114-phpapp01
TDC2017 | São Paulo - Trilha Programação Funcional How we figured out we had ...

Semelhante a Haskell aula1 apresentação (20)

PDF
Programação funcional com_haskell
PDF
Curso de shell-tutorial avançadoIII .pdf
PPT
PHP GERAL
PPTX
Automação de Aplicativos: Scripting com Python
PDF
T10_LM3: Subalgoritmos/funções (2013-2014)
PDF
Zephir
PDF
M2ti - Python Brasil
PDF
Haskell - Introdução
PDF
Linguagens de programação
PPSX
Cakephp 2.0 - O que mudou
PDF
Linguagem de programação haskell
PDF
Haskell motivação
DOCX
P funcional
PDF
Cucumber: um breve review
PDF
PHP Presente e Futuro
PDF
PHP, Presente e Futuro
PDF
Minicurso - funcional (CTI/2019)
PDF
Desenvolvimento de Software I - USBWEBSERVER - PHP
PDF
40 php orientado a objetos
Programação funcional com_haskell
Curso de shell-tutorial avançadoIII .pdf
PHP GERAL
Automação de Aplicativos: Scripting com Python
T10_LM3: Subalgoritmos/funções (2013-2014)
Zephir
M2ti - Python Brasil
Haskell - Introdução
Linguagens de programação
Cakephp 2.0 - O que mudou
Linguagem de programação haskell
Haskell motivação
P funcional
Cucumber: um breve review
PHP Presente e Futuro
PHP, Presente e Futuro
Minicurso - funcional (CTI/2019)
Desenvolvimento de Software I - USBWEBSERVER - PHP
40 php orientado a objetos
Anúncio

Mais de CRISLANIO MACEDO (20)

PPTX
Record Deduplication and Record Linkage
PDF
Pitch selo sebrae - Hackathon 2019
PPTX
Pitch Medbloc
PDF
Search based gravitational algorithm
PDF
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
PDF
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
PDF
JGROUPS- A Toolkit for Reliable Multicast Communication
PDF
Inteligência artificial algumas técnicas aplicadas em jogos
PDF
Artigo ia traps, invariants, and dead-ends
PDF
Análise dos dados abertos do governo federal
PDF
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
PDF
Sistema de denúncia de desperdício de água - Etapa de Avaliação
PDF
Sistema de denúncia de desperdício de água - Etapa de Síntese
PDF
Resolução lista2
PDF
Resoluçãohaskell2
PDF
Haskell ufc quixadalista2
PDF
Haskell ufc quixadalista1
PDF
Haskell motivaçãoaula2
PDF
Haskell aula7 libs_intro_arquivos
PDF
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Record Deduplication and Record Linkage
Pitch selo sebrae - Hackathon 2019
Pitch Medbloc
Search based gravitational algorithm
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
JGROUPS- A Toolkit for Reliable Multicast Communication
Inteligência artificial algumas técnicas aplicadas em jogos
Artigo ia traps, invariants, and dead-ends
Análise dos dados abertos do governo federal
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
Sistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de Síntese
Resolução lista2
Resoluçãohaskell2
Haskell ufc quixadalista2
Haskell ufc quixadalista1
Haskell motivaçãoaula2
Haskell aula7 libs_intro_arquivos
Haskell aula5 f.ordem-sup_modulos-cifra_cesar
Anúncio

Último (19)

PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Aula 18 - Manipulacao De Arquivos python
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
Apple Pippin Uma breve introdução. - David Glotz
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PDF
Aula04-Academia Heri- Tecnologia Geral 2025
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Aula 18 - Manipulacao De Arquivos python
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Apple Pippin Uma breve introdução. - David Glotz
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Aula04-Academia Heri- Tecnologia Geral 2025
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
COBITxITIL-Entenda as diferença em uso governança TI
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Processos na gestão de transportes, TM100 Col18
Gestão de transportes básica no SAP S/4HANA, S4611 Col20

Haskell aula1 apresentação

  • 1. Programação Funcional em Haskell 1a Reunião — Apresentação
  • 2. Conteúdo e objetivos  Introdução à programação funcional usando Haskell  Objetivos de aprendizagem  Apresentar funções algumas funções da linguagem haskell;  Definir funções usando equações com padrões e guardas;  Implementar algoritmos recursivos elementares;
  • 3. Funcionamento  Reuniões 2 x 2 h por semana  Página web Learn you a Haskell for great good! http://learnyouahaskell.com/ http://haskell.tailorfontela.com.br/introduction
  • 4. O que é a programação funcional?  É um paradigma de programação  No paradigma imperativo, um programa é uma sequência de instruções que mudam células na memória  No paradigma funcional, um programa é um conjunto de definições de funções que aplicamos a valores  Exemplos de linguagens: Scheme, ML, O’Caml, Haskell, F#, Scala, Lisp
  • 5. Exemplo: somar os naturais de 1 a 10  Em linguagem C: total = 0; for (i=1; i<=10; ++i) total = total + i;  O programa é uma sequência de instruções  O resultado é obtido por mutação das variáveis i e total
  • 6. Exemplo: somar os naturais de 1 a 10  Em Haskell: sum [1..10]  O programa consiste na aplicação da função sum à lista dos inteiros entre 1 e 10.
  • 7. Vantagens da programação funcional  Nível mais alto Programas mais concisos  Concorrencia/paralelismo A ordem de execução não afeta os resultados
  • 8. Desvantagens da programação funcional  Maior distância do hardware Compiladores/interpretadores mais complexos; Difícil prever os custos de execução (tempo/espaço);
  • 9. Haskell no mundo real  Algumas exemplos open-source: GHC o compilador de Haskell é escrito em Haskell (!) Darcs um sistema distribuido para gestão de código-fonte
  • 10. Haskell no mundo real  Utilizações em backend de aplicações web: Bump mover ficheiros entre smartphones http://devblog.bu.mp/haskell-at-bump Janrain plataforma de user management http://janrain.com/blog/ functional-programming-social-web Chordify extração de acordes musicais http://chordify.net Mais exemplos: http://www.haskell.org/haskellwiki/Haskell_in_industry
  • 11. Glasgow Haskell Compiler (GHC)  Compilador que gera código-máquina nativo  Suporta Haskell 98, Haskell 2010 e bastantes extensões  Inclui também o interpretador ghci.  Disponível em http://www.haskell.org/ghc
  • 12. Algumas funções > head [1,2,3,4] obter o 1o elemento 1 > tail [1,2,3,4] remover o 1º elemento [2,3,4] > length [1,2,3,4,5] comprimento 5 > take 3 [1,2,3,4,5] obter um prefixo [1,2,3] > drop 3 [1,2,3,4,5] remover um prefixo [4,5]
  • 13. Algumas funções > [1,2,3] ++ [4,5] concatenar [1,2,3,4,5] > reverse [1,2,3,4,5] inverter [5,4,3,2,1] > [1,2,3,4,5] !! 3 indexação 4 > sum [1,2,3,4,5] soma dos elementos 15 > product [1,2,3,4,5] produto dos elementos 120
  • 14. Comandos úteis do interpretador GHCi :load fich carregar um ficheiro :reload re-carregar modificações :edit editar o ficheiro actual :set editor prog definir o editor :type expr mostrar o tipo duma expressão :help obter ajuda :quit terminar a sessão  Podem ser abreviados, :l em vez de :load.
  • 15. Indentação Todas as definições num mesmo âmbito devem começar na mesma coluna. a = 1 a = 1 a = 1 b = 2 b = 2 b = 2 c = 3 c = 3 c = 3 ERRADO ERRADO OK A ordem das definições não é relevante.
  • 16. Comentários Simples: começam por -- até ao final da linha Geral: delimitados por {- e -} -- média de dois valores media x y = (x+y)/2 {- ** as definições seguintes estão comentadas ** dobro x = x+x quadrado x = x*x -}.