Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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,169 views

Published on

  • Be the first to comment

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 />

×