Paradigmas de Linguagens de ProgramaçãoProf. Péricles Miranda
Paradigma Funcional usando Haskell
Linguagem HaskellLinguagemFuncionalPuraImplementações:GHC:Compilador;Utilização similar à compiladores de outraslinguagens.HUGS:Interpretada, facilita a aprendizagem;O programadorforneceaointerpretadorumaexpressão e estemostra o resultadodasuaavaliação.
Tipos da Linguagem HaskellTiposPrimitivos (Similares a Java): Int: Inteiro de 32 bits+, -, *, mod,  div, ^;Integer: Inteirosemlimitação de tamanhoFloat+, -, *, /, ^; Char
ObservaçãoEm Haskell todosostiposcomeçam com letraMAIÚSCULATodososnomesiniciados com letraminúsculassãonomes de funções.
Tipo FunçãoUmafunçãocalcula um resultado a partir de um argumento:Porser umalinguagemfuncionalpura, em Haskell o resultadoproduzidoporumafunçãovariaapenasemfunçãovalores dos seusargumentos.Sintaxe:X -> YFunçãoquerecebe um valor do tipo X e produz um valor do tipoYX -> Y -> ZFunçãoquerecebeargumentos dos tipos X e Y e produz um valor do tipo Z.Chamada de função:f xf x y
Programa Haskelldois:: Int -- tipodadeclaracaodois = 2 -- valor dadeclaracaof :: Int -> Intf x = x + 1g :: Int -> Int -> Intg x y = x + 2*y
DeclaraçãoPolimórficaMotivação:Muitasfunçõesnãodependem de seustiposparaseremdefinidas.Exemplo:-- FuncaosegundovalorsegI :: Int -> Int -> IntsegI x y = ysegF :: Float -> Float -> FloatsegF x y = ysegC :: Char -> Char -> CharsegC x y = yA definiçãodamesmafunçãoparaparadiferentestiposgeramuitaredundância de código.
Declaração PolimórficaTipopolimórfico: Tipoquepode ser substituídoporqualqueroutrotipodalinguagem.Representadoporletrasminúsculas.Exemplo:seg :: a -> a -> aseg x y = yO tipopolimórfico “a” podesignificarqualquertipo real nalinguagem.
InferênciaAutomática de TiposO programador Haskell não tem de definirostipos de todas as funçõesde um programa.Se elenãoespecificar o tipo de umafunção, o compilador/interpretadortentará “adivinhar” o tipo a partirdaanálise do corpo de declaração.Exemplo:f :: Int -> Intf x = x * 2n x y = (f x) + (f y)Qual a assinaturadafunção ‘n’?
VamosPraticar?
ExercíciosImplementar operações básicas entre dois números (+, -, /, *);Implementar a média entre 4 números;Implementar programa para dizer se número é par;Implementar programa para dizer se número é ímpar;Implementar programa para encontrar o maior entre 3 números;Implementar programa para encontrar o menor entre 3 números;Para cada exercício acima, mostre o tipo das funções.
Paradigmas de Linguagens de ProgramaçãoProf. Péricles Miranda

5 paradigma funcional usando haskell