Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />
Paradigma Funcional usando Haskell<br />
Linguagem Haskell<br />LinguagemFuncionalPura<br />Implementações:<br />GHC:<br />Compilador;<br />Utilização similar à co...
Tipos da Linguagem Haskell<br />TiposPrimitivos (Similares a Java): <br />Int: Inteiro de 32 bits<br />+, -, *, mod,  div,...
Observação<br />Em Haskell todosostiposcomeçam com letraMAIÚSCULA<br />Todososnomesiniciados com letraminúsculassãonomes d...
Tipo Função<br />Umafunçãocalcula um resultado a partir de um argumento:<br />Porser umalinguagemfuncionalpura, em Haskell...
Programa Haskell<br />dois:: Int -- tipodadeclaracao<br />dois = 2 -- valor dadeclaracao<br />f :: Int -> Int<br />f x = x...
DeclaraçãoPolimórfica<br />Motivação:<br />Muitasfunçõesnãodependem de seustiposparaseremdefinidas.<br />Exemplo:<br />-- ...
Declaração Polimórfica<br />Tipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem.<br />Representado...
InferênciaAutomática de Tipos<br />O programador Haskell não tem de definirostipos de todas as funçõesde um programa.<br /...
VamosPraticar?<br />
Exercícios<br />Implementar operações básicas entre dois números (+, -, /, *);<br />Implementar a média entre 4 números;<b...
Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />
Upcoming SlideShare
Loading in …5
×

5 paradigma funcional usando haskell

1,080 views
994 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,080
On SlideShare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

5 paradigma funcional usando haskell

  1. 1. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />
  2. 2. Paradigma Funcional usando Haskell<br />
  3. 3. Linguagem Haskell<br />LinguagemFuncionalPura<br />Implementações:<br />GHC:<br />Compilador;<br />Utilização similar à compiladores de outraslinguagens.<br />HUGS:<br />Interpretada, facilita a aprendizagem;<br />O programadorforneceaointerpretadorumaexpressão e estemostra o resultadodasuaavaliação.<br />
  4. 4. Tipos da Linguagem Haskell<br />TiposPrimitivos (Similares a Java): <br />Int: Inteiro de 32 bits<br />+, -, *, mod, div, ^;<br />Integer: Inteirosemlimitação de tamanho<br />Float<br />+, -, *, /, ^; <br />Char<br />
  5. 5. Observação<br />Em Haskell todosostiposcomeçam com letraMAIÚSCULA<br />Todososnomesiniciados com letraminúsculassãonomes de funções.<br />
  6. 6. Tipo Função<br />Umafunçãocalcula um resultado a partir de um argumento:<br />Porser umalinguagemfuncionalpura, em Haskell o resultadoproduzidoporumafunçãovariaapenasemfunçãovalores dos seusargumentos.<br />Sintaxe:<br />X -> Y<br />Funçãoquerecebe um valor do tipo X e produz um valor do tipoY<br />X -> Y -> Z<br />Funçãoquerecebeargumentos dos tipos X e Y e produz um valor do tipo Z.<br />Chamada de função:<br />f x<br />f x y <br />
  7. 7. Programa Haskell<br />dois:: Int -- tipodadeclaracao<br />dois = 2 -- valor dadeclaracao<br />f :: Int -> Int<br />f x = x + 1<br />g :: Int -> Int -> Int<br />g x y = x + 2*y<br />
  8. 8. DeclaraçãoPolimórfica<br />Motivação:<br />Muitasfunçõesnãodependem de seustiposparaseremdefinidas.<br />Exemplo:<br />-- Funcaosegundovalor<br />segI :: Int -> Int -> Int<br />segI x y = y<br />segF :: Float -> Float -> Float<br />segF x y = y<br />segC :: Char -> Char -> Char<br />segC x y = y<br />A definiçãodamesmafunçãoparaparadiferentestiposgeramuitaredundância de código.<br />
  9. 9. Declaração Polimórfica<br />Tipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem.<br />Representadoporletrasminúsculas.<br />Exemplo:<br />seg :: a -> a -> a<br />seg x y = y<br />O tipopolimórfico “a” podesignificarqualquertipo real nalinguagem.<br />
  10. 10. InferênciaAutomática de Tipos<br />O programador Haskell não tem de definirostipos de todas as funçõesde um programa.<br />Se elenãoespecificar o tipo de umafunção, o compilador/interpretadortentará “adivinhar” o tipo a partirdaanálise do corpo de declaração.<br />Exemplo:<br />f :: Int -> Int<br />f x = x * 2<br />n x y = (f x) + (f y)<br />Qual a assinaturadafunção ‘n’?<br />
  11. 11. VamosPraticar?<br />
  12. 12. Exercícios<br />Implementar operações básicas entre dois números (+, -, /, *);<br />Implementar a média entre 4 números;<br />Implementar programa para dizer se número é par;<br />Implementar programa para dizer se número é ímpar;<br />Implementar programa para encontrar o maior entre 3 números;<br />Implementar programa para encontrar o menor entre 3 números;<br />Para cada exercício acima, mostre o tipo das funções.<br />
  13. 13. Paradigmas de Linguagens de Programação<br />Prof. Péricles Miranda<br />

×