SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
Programação Funcional
em Haskell
Resolução Lista 2
Um pouco sobre Dobras
 Função foldl, também chamada de "left fold" (dobra
esquerda), dobra a lista a partir do lado esquerdo.
 A função foldr dobra a lista a partir do lado direito
 As funções foldl1 e foldr1 funcionam da mesma forma que
foldl e foldr, só que você não precisa informar explicitamente
qual o valor inicial.
 Ele assume que o primeiro (ou último) elemento da lista é o
valor inicial da dobra e então inicia a dobra com ele.
Dobras em Haskell
foldr (+) 0 [1..10] valor inicial 0, 0 + 10 + ... 1
foldl (+) 0 [1..10] valor inicial 0, 0 + 0 + ... 10
foldr1 (+) [1..10] valor inical 10,10 + 9 + ... 1
foldl1 (+) [1..10] valor inical 1, 1 + 2 + ... 10
Dobras em Haskell
Prelude> putStrLn $ foldr (x y -> concat ["(",x,"+",y,")"]) "0" (map show
[1..13])
(1+(2+(3+(4+(5+(6+(7+(8+(9+(10+(11+(12+(13+0)))))))))))))
Prelude> putStrLn $ foldl (x y -> concat ["(",x,"+",y,")"]) "0" (map show
[1..13])
(((((((((((((0+1)+2)+3)+4)+5)+6)+7)+8)+9)+10)+11)+12)+13)
Prelude> putStrLn $ foldr1 (x y -> concat ["(",x,"+",y,")"]) (map show [1..13])
(1+(2+(3+(4+(5+(6+(7+(8+(9+(10+(11+(12+13))))))))))))
Prelude> putStrLn $ foldl1 (x y -> concat ["(",x,"+",y,")"]) (map show [1..13])
((((((((((((1+2)+3)+4)+5)+6)+7)+8)+9)+10)+11)+12)+13)
Dobras em Haskell
Prelude> foldr (x y->x:'.':y) "" []:"CRIS":[]
["",“CRIS"]
Prelude> foldr (x y->x:'.':y) "" "CRIS":[]
[“C.R.I.S."]
Prelude> foldr (x y->x:'.':y) "" "CRIS"
“C.R.I.S."
Prelude> foldr (x y->x:'.':y) "" [‘c']:“CRIS":[]
["a.",“CRIS"]
1° QUESTÃO
--1° NIVEL 3
Prelude> length (filter (/='a') "banana")
3
Prelude> length (filter (/='n') "banana")
4
Prelude> length ([1,2]:[3,4]:[])
2
Prelude> length [1,3..7]
4
Prelude> length (drop 6 "abcdefg123")
4
Prelude> length ([1,2]:[3]:[])
2
Prelude> length [(x,y)| x<-"abc", y<-[0,1,2]]
9
1° QUESTÃO
--1° NIVEL 3
Prelude> head [n | n<-[1..], n*n>15]
44
Prelude> head [n | n<-[1..], n*n>20]
5
Prelude> head([]++[1,2]++[3])
1
Prelude> [x | x<- "ab", n<-[1,2,3]]
"aaabbb"
Prelude> map (`div` 2) [1,2,3]
[0,1,1]
Prelude> (reverse [3,2])++ [4,5]
[2,3,4,5]
Prelude> reverse ([4,5]++[1,2,3])
[3,2,1,5,4]
1° QUESTÃO
--1° NIVEL 3
Prelude> :t ([1,2,3], "banana")
([1,2,3], "banana") :: Num t => ([t], [Char])
Prelude> :t [(1,"banana"), (2,"maçã")]
[(1,"banana"), (2,"maçã")] :: Num t => [(t, [Char])]
2° QUESTÃO
--2° NIVEL 5
Prelude> foldr (-) (-2) [1,2,3,4]
-4
Prelude> foldr (-) (2) [1,2,3,4]
0
Prelude> foldl (-) (2) [1,2,3,4]
-8
Prelude> foldl (-) (-2) [1,2,3,4]
-12
3° QUESTÃO
--3° NIVEL 6
Prelude> foldr (+) 2 (map (+1) [1,2,3])
11
Prelude> foldl (+) 2 (map (+1) [1,2,3])
11
Prelude> foldr (-) 2 (map ((-)1) [1,2,2])
-2
Prelude> foldl (-) 2 (map ((-)1) [1,2,2])
4
Prelude> foldr(x y->x:'.':y) "" "PAULO"
"P.A.U.L.O.“
Prelude> foldl(x y->x:'.':y) "" "ITALOS"
--ERRO
4° QUESTÃO
--4° NIVEL 7
Prelude> foldl (+) 0 (filter (>1) [sum(map ((-)1) [1,2,2])])
0
Prelude> sum(map (-1) [1,2,2])
--ERRO
Prelude> [map (>2) [1,2,3]] ++ ([]) ++ [[True]]
[[False,False,True],[True]]
Prelude> [map (>2) [1,6,6]] ++ ([]) ++ [[]]
[[False,True,True],[]]
Prelude> [map (>2) [-1, 2,4]] ++([])
[[False,False,True]]
5° QUESTÃO
--5° NIVEL MASTER PROIBIDO PARA MENORES DE 18 ANOS.
Prelude> foldr1 (-) [4,3,2]
3
Prelude> foldl1 (-) [-2,3,4]
-9
Agradecimentos
Ao Prof°- Ricardo Reis e a todos os participantes do projeto
haskell ufc.

Mais conteúdo relacionado

Mais procurados

Sobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstraçãoSobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstraçãoArthur Xavier
 
Cheat sheet - String Java (Referência rápida)
Cheat sheet - String Java (Referência rápida)Cheat sheet - String Java (Referência rápida)
Cheat sheet - String Java (Referência rápida)Rafael Liberato
 
Programando em python listas
Programando em python   listasProgramando em python   listas
Programando em python listassamuelthiago
 
Bogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de ProgramaçãoBogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de ProgramaçãoRodolpho Eckhardt
 
meetup adopting java8
meetup adopting java8meetup adopting java8
meetup adopting java8Filipe Portes
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Elaine Cecília Gatto
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OracleAndré Reis
 
Lazy Evaluation em Scala
Lazy Evaluation em ScalaLazy Evaluation em Scala
Lazy Evaluation em Scalapmatiello
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaEduardo Bregaida
 

Mais procurados (20)

Sobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstraçãoSobre programas e funções: pensando em abstração
Sobre programas e funções: pensando em abstração
 
Cheat sheet - String Java (Referência rápida)
Cheat sheet - String Java (Referência rápida)Cheat sheet - String Java (Referência rápida)
Cheat sheet - String Java (Referência rápida)
 
Scheme
SchemeScheme
Scheme
 
Python aula 2
Python aula 2Python aula 2
Python aula 2
 
Programando em python listas
Programando em python   listasProgramando em python   listas
Programando em python listas
 
Bogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de ProgramaçãoBogosort e Técnicas Realmente Avançadas de Programação
Bogosort e Técnicas Realmente Avançadas de Programação
 
meetup adopting java8
meetup adopting java8meetup adopting java8
meetup adopting java8
 
Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3Vetores, Matrizes e Strings em C Parte 3
Vetores, Matrizes e Strings em C Parte 3
 
Passagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e OraclePassagem de Objetos entre Java e Oracle
Passagem de Objetos entre Java e Oracle
 
iOS 8 com swift
iOS 8 com swiftiOS 8 com swift
iOS 8 com swift
 
Introdução a ciência de dados com Python
Introdução a ciência de dados com PythonIntrodução a ciência de dados com Python
Introdução a ciência de dados com Python
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
python
pythonpython
python
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Pilha e Fila Estática
Pilha e Fila EstáticaPilha e Fila Estática
Pilha e Fila Estática
 
Lazy Evaluation em Scala
Lazy Evaluation em ScalaLazy Evaluation em Scala
Lazy Evaluation em Scala
 
Pilha e Fila Dinamica
Pilha e Fila DinamicaPilha e Fila Dinamica
Pilha e Fila Dinamica
 
Pilha e filas
Pilha e filasPilha e filas
Pilha e filas
 
Refatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completaRefatoração de código com Capitão Nascimento versão completa
Refatoração de código com Capitão Nascimento versão completa
 
Apostila rpira
Apostila rpiraApostila rpira
Apostila rpira
 

Semelhante a Haskell Listas Dobras

Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em PythonRicardo Paiva
 
Por que dizemos que Scala é uma linguagem funcional?
Por que dizemos que Scala é uma linguagem funcional?Por que dizemos que Scala é uma linguagem funcional?
Por que dizemos que Scala é uma linguagem funcional?pmatiello
 
Apostila 2 geogebra
Apostila 2 geogebraApostila 2 geogebra
Apostila 2 geogebraFranbfk
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfSimoneSantos16595
 
21 aula graficos de funcoes reais
21 aula   graficos de funcoes reais21 aula   graficos de funcoes reais
21 aula graficos de funcoes reaisjatobaesem
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Elaine Cecília Gatto
 
Conjuntos numéricos versão mini
Conjuntos numéricos   versão miniConjuntos numéricos   versão mini
Conjuntos numéricos versão miniLuciano Pessanha
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Pythondmmartins
 
Mat progressao aritmetica ( pa ) ii
Mat progressao aritmetica ( pa ) iiMat progressao aritmetica ( pa ) ii
Mat progressao aritmetica ( pa ) iitrigono_metrico
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)Felipe Meganha
 
(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - Arrays(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - ArraysCarlos Santos
 
Capitulo 1scilab
Capitulo 1scilabCapitulo 1scilab
Capitulo 1scilabwjunior
 

Semelhante a Haskell Listas Dobras (19)

Estruturas de dados em Python
Estruturas de dados em PythonEstruturas de dados em Python
Estruturas de dados em Python
 
Por que dizemos que Scala é uma linguagem funcional?
Por que dizemos que Scala é uma linguagem funcional?Por que dizemos que Scala é uma linguagem funcional?
Por que dizemos que Scala é uma linguagem funcional?
 
áLgebra i
áLgebra iáLgebra i
áLgebra i
 
Apostila 2 geogebra
Apostila 2 geogebraApostila 2 geogebra
Apostila 2 geogebra
 
EDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdfEDA_Aula_09_Complexidade_2021.1.pdf
EDA_Aula_09_Complexidade_2021.1.pdf
 
21 aula graficos de funcoes reais
21 aula   graficos de funcoes reais21 aula   graficos de funcoes reais
21 aula graficos de funcoes reais
 
Listas Encadeadas
Listas EncadeadasListas Encadeadas
Listas Encadeadas
 
05 listas
05 listas05 listas
05 listas
 
Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1Vetores, Matrizes e Strings em C Parte 1
Vetores, Matrizes e Strings em C Parte 1
 
Discreta1
Discreta1Discreta1
Discreta1
 
Conjuntos numéricos versão mini
Conjuntos numéricos   versão miniConjuntos numéricos   versão mini
Conjuntos numéricos versão mini
 
Aula 01
Aula 01Aula 01
Aula 01
 
Introdução à Linguagem de programação Python
Introdução à Linguagem de programação PythonIntrodução à Linguagem de programação Python
Introdução à Linguagem de programação Python
 
Mat progressao aritmetica ( pa ) ii
Mat progressao aritmetica ( pa ) iiMat progressao aritmetica ( pa ) ii
Mat progressao aritmetica ( pa ) ii
 
Matlab – curso básico (1)
Matlab – curso básico (1)Matlab – curso básico (1)
Matlab – curso básico (1)
 
Apostila minicurso geogebra
Apostila minicurso geogebraApostila minicurso geogebra
Apostila minicurso geogebra
 
(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - Arrays(A12) LabMM3 - JavaScript - Arrays
(A12) LabMM3 - JavaScript - Arrays
 
Python 02
Python 02Python 02
Python 02
 
Capitulo 1scilab
Capitulo 1scilabCapitulo 1scilab
Capitulo 1scilab
 

Mais de CRISLANIO MACEDO

Record Deduplication and Record Linkage
Record Deduplication and  Record LinkageRecord Deduplication and  Record Linkage
Record Deduplication and Record LinkageCRISLANIO MACEDO
 
Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019CRISLANIO MACEDO
 
Search based gravitational algorithm
Search based gravitational algorithmSearch based gravitational algorithm
Search based gravitational algorithmCRISLANIO MACEDO
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...CRISLANIO MACEDO
 
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...CRISLANIO MACEDO
 
JGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast CommunicationJGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast CommunicationCRISLANIO MACEDO
 
Inteligência artificial algumas técnicas aplicadas em jogos
Inteligência artificial  algumas técnicas aplicadas em jogosInteligência artificial  algumas técnicas aplicadas em jogos
Inteligência artificial algumas técnicas aplicadas em jogosCRISLANIO MACEDO
 
Artigo ia traps, invariants, and dead-ends
Artigo ia   traps, invariants, and dead-endsArtigo ia   traps, invariants, and dead-ends
Artigo ia traps, invariants, and dead-endsCRISLANIO MACEDO
 
Análise dos dados abertos do governo federal
Análise dos dados abertos do governo federalAnálise dos dados abertos do governo federal
Análise dos dados abertos do governo federalCRISLANIO MACEDO
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...CRISLANIO MACEDO
 
Sistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de AvaliaçãoSistema de denúncia de desperdício de água - Etapa de Avaliação
Sistema de denúncia de desperdício de água - Etapa de AvaliaçãoCRISLANIO MACEDO
 
Sistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de SínteseSistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de SínteseCRISLANIO MACEDO
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosCRISLANIO MACEDO
 
Haskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesHaskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesCRISLANIO MACEDO
 

Mais de CRISLANIO MACEDO (20)

Record Deduplication and Record Linkage
Record Deduplication and  Record LinkageRecord Deduplication and  Record Linkage
Record Deduplication and Record Linkage
 
Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019Pitch selo sebrae - Hackathon 2019
Pitch selo sebrae - Hackathon 2019
 
Pitch Medbloc
Pitch MedblocPitch Medbloc
Pitch Medbloc
 
Search based gravitational algorithm
Search based gravitational algorithmSearch based gravitational algorithm
Search based gravitational algorithm
 
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
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...
Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...Integración de métodos ágiles a una empresa de nivel 5 cmmi dev- un caso de e...
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
JGROUPS- A Toolkit for Reliable Multicast CommunicationJGROUPS- A Toolkit for Reliable Multicast Communication
JGROUPS- A Toolkit for Reliable Multicast Communication
 
Inteligência artificial algumas técnicas aplicadas em jogos
Inteligência artificial  algumas técnicas aplicadas em jogosInteligência artificial  algumas técnicas aplicadas em jogos
Inteligência artificial algumas técnicas aplicadas em jogos
 
Artigo ia traps, invariants, and dead-ends
Artigo ia   traps, invariants, and dead-endsArtigo ia   traps, invariants, and dead-ends
Artigo ia traps, invariants, and dead-ends
 
Análise dos dados abertos do governo federal
Análise dos dados abertos do governo federalAnálise dos dados abertos do governo federal
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...
ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...ANÁLISE ESTATÍSTICA DA RELAÇÃO ENTRE EVASÃO E AS RESPOSTAS DO QUESTIONÁRIO PA...
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 AvaliaçãoSistema de denúncia de desperdício de água - Etapa de Avaliação
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
Sistema de denúncia de desperdício de água - Etapa de SínteseSistema de denúncia de desperdício de água - Etapa de Síntese
Sistema de denúncia de desperdício de água - Etapa de Síntese
 
Resoluçãohaskell2
Resoluçãohaskell2Resoluçãohaskell2
Resoluçãohaskell2
 
Haskell ufc quixadalista2
Haskell ufc quixadalista2Haskell ufc quixadalista2
Haskell ufc quixadalista2
 
Haskell ufc quixadalista1
Haskell ufc quixadalista1Haskell ufc quixadalista1
Haskell ufc quixadalista1
 
Haskell motivação
Haskell motivaçãoHaskell motivação
Haskell motivação
 
Haskell motivaçãoaula2
Haskell motivaçãoaula2Haskell motivaçãoaula2
Haskell motivaçãoaula2
 
Haskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivosHaskell aula7 libs_intro_arquivos
Haskell aula7 libs_intro_arquivos
 
Haskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classesHaskell aula2 tipos-e-classes
Haskell aula2 tipos-e-classes
 

Haskell Listas Dobras

  • 2. Um pouco sobre Dobras  Função foldl, também chamada de "left fold" (dobra esquerda), dobra a lista a partir do lado esquerdo.  A função foldr dobra a lista a partir do lado direito  As funções foldl1 e foldr1 funcionam da mesma forma que foldl e foldr, só que você não precisa informar explicitamente qual o valor inicial.  Ele assume que o primeiro (ou último) elemento da lista é o valor inicial da dobra e então inicia a dobra com ele.
  • 3. Dobras em Haskell foldr (+) 0 [1..10] valor inicial 0, 0 + 10 + ... 1 foldl (+) 0 [1..10] valor inicial 0, 0 + 0 + ... 10 foldr1 (+) [1..10] valor inical 10,10 + 9 + ... 1 foldl1 (+) [1..10] valor inical 1, 1 + 2 + ... 10
  • 4. Dobras em Haskell Prelude> putStrLn $ foldr (x y -> concat ["(",x,"+",y,")"]) "0" (map show [1..13]) (1+(2+(3+(4+(5+(6+(7+(8+(9+(10+(11+(12+(13+0))))))))))))) Prelude> putStrLn $ foldl (x y -> concat ["(",x,"+",y,")"]) "0" (map show [1..13]) (((((((((((((0+1)+2)+3)+4)+5)+6)+7)+8)+9)+10)+11)+12)+13) Prelude> putStrLn $ foldr1 (x y -> concat ["(",x,"+",y,")"]) (map show [1..13]) (1+(2+(3+(4+(5+(6+(7+(8+(9+(10+(11+(12+13)))))))))))) Prelude> putStrLn $ foldl1 (x y -> concat ["(",x,"+",y,")"]) (map show [1..13]) ((((((((((((1+2)+3)+4)+5)+6)+7)+8)+9)+10)+11)+12)+13)
  • 5. Dobras em Haskell Prelude> foldr (x y->x:'.':y) "" []:"CRIS":[] ["",“CRIS"] Prelude> foldr (x y->x:'.':y) "" "CRIS":[] [“C.R.I.S."] Prelude> foldr (x y->x:'.':y) "" "CRIS" “C.R.I.S." Prelude> foldr (x y->x:'.':y) "" [‘c']:“CRIS":[] ["a.",“CRIS"]
  • 6. 1° QUESTÃO --1° NIVEL 3 Prelude> length (filter (/='a') "banana") 3 Prelude> length (filter (/='n') "banana") 4 Prelude> length ([1,2]:[3,4]:[]) 2 Prelude> length [1,3..7] 4 Prelude> length (drop 6 "abcdefg123") 4 Prelude> length ([1,2]:[3]:[]) 2 Prelude> length [(x,y)| x<-"abc", y<-[0,1,2]] 9
  • 7. 1° QUESTÃO --1° NIVEL 3 Prelude> head [n | n<-[1..], n*n>15] 44 Prelude> head [n | n<-[1..], n*n>20] 5 Prelude> head([]++[1,2]++[3]) 1 Prelude> [x | x<- "ab", n<-[1,2,3]] "aaabbb" Prelude> map (`div` 2) [1,2,3] [0,1,1] Prelude> (reverse [3,2])++ [4,5] [2,3,4,5] Prelude> reverse ([4,5]++[1,2,3]) [3,2,1,5,4]
  • 8. 1° QUESTÃO --1° NIVEL 3 Prelude> :t ([1,2,3], "banana") ([1,2,3], "banana") :: Num t => ([t], [Char]) Prelude> :t [(1,"banana"), (2,"maçã")] [(1,"banana"), (2,"maçã")] :: Num t => [(t, [Char])]
  • 9. 2° QUESTÃO --2° NIVEL 5 Prelude> foldr (-) (-2) [1,2,3,4] -4 Prelude> foldr (-) (2) [1,2,3,4] 0 Prelude> foldl (-) (2) [1,2,3,4] -8 Prelude> foldl (-) (-2) [1,2,3,4] -12
  • 10. 3° QUESTÃO --3° NIVEL 6 Prelude> foldr (+) 2 (map (+1) [1,2,3]) 11 Prelude> foldl (+) 2 (map (+1) [1,2,3]) 11 Prelude> foldr (-) 2 (map ((-)1) [1,2,2]) -2 Prelude> foldl (-) 2 (map ((-)1) [1,2,2]) 4 Prelude> foldr(x y->x:'.':y) "" "PAULO" "P.A.U.L.O.“ Prelude> foldl(x y->x:'.':y) "" "ITALOS" --ERRO
  • 11. 4° QUESTÃO --4° NIVEL 7 Prelude> foldl (+) 0 (filter (>1) [sum(map ((-)1) [1,2,2])]) 0 Prelude> sum(map (-1) [1,2,2]) --ERRO Prelude> [map (>2) [1,2,3]] ++ ([]) ++ [[True]] [[False,False,True],[True]] Prelude> [map (>2) [1,6,6]] ++ ([]) ++ [[]] [[False,True,True],[]] Prelude> [map (>2) [-1, 2,4]] ++([]) [[False,False,True]]
  • 12. 5° QUESTÃO --5° NIVEL MASTER PROIBIDO PARA MENORES DE 18 ANOS. Prelude> foldr1 (-) [4,3,2] 3 Prelude> foldl1 (-) [-2,3,4] -9
  • 13. Agradecimentos Ao Prof°- Ricardo Reis e a todos os participantes do projeto haskell ufc.