Na disciplina de paradigmas de programação trabalhamos com diferentes abordagens e estilos na resolução de problemas computacionais. Na faculdade iniciamos o estudo de algoritmos com C, consolidando uma base sólida, partimos para uma abordagem multiparadigma.
Mas para que compreender os multiparadigmas? Porque o futuro é multiparadigma. É necessário se desvencilhar de uma única linguagem de programação, de uma única abordagem para a resolução de problemas e começar a se desvencilhar disso para se tornar mais versátil e capaz de escolher maneiras mais eficazes para a solução das adversidades do dia a dia.
A priori, criei este repositório para sintetizar o conteúdo de Programação Funcional disponibilizado pela docente da disciplina de Paradigmas de Programação em um formato de slides com templates interativos e que facilitassem o estudo para a avaliação da disciplina. Ao iniciar os estudos de Haskell, aprendi sobre funções pré-definidas e a melhor desenvolver funções com seus respectivos nomes, valores e tipos. Na aba "Issues" se encontra as imagens utilizadas e também um resumo digital que fiz a mão.
A programação funcional é um paradigma de programação na qual vincula funções matemáticas puras.
Dentre os paradigmas de programação podemos citar: Procedural/Procedimental, funcional, lógico, orientado a objetos, concorrente, orientado a aspectos, orientado a eventos e visual.
Linguagem de programação funcional. "Um comando em Haskell é uma fórmula escrita na sintaxe da linguagem."
nomefunc arg1 ... argn
nomefunc arg1 ... argn = expressão
Funções que recebem outras funções como argumento e/ou produzem funções como resultado.
- Quanto a função map, esta aplica a função a cada elemento da lista, inserindo cada resultado na lista resultante. Ou seja, "mapeia" os elementos da lista de entrada e os insere na lista resultante.
- Sobre a função filter, utiliza de uma função booleana e uma lista para que sua saída sejam apenas os elementos que sejam verdadeiros (true). Ou seja, filtra os elementos de uma lista e seu resultado será referente a função booleana em cada elemento da lista, sendo de tamanho igual ou inferior ao da lista de entrada.
A função zipWith recebe uma função e duas listas como argumento, para que seja aplicado a função a cada par de elementos correspondentes nas duas listas recebidas, produzindo outra lista como saída.
No exemplo consta: add x y = x + y Ao aplicar: zipWith add [10,11,12] [1,2,3] Foi somado 10+1, 11+2, 12+3, resultando a nova lista: [11,13,15]
Em resumo, a função lambda é uma maneira de sintetizar as equações, não sendo necessário a inclusão de um nome para a função.
Ao meu ver, a função left..in organiza a função de modo que: dado os valores das variavés em: let x =..., y=..., colocando as variáveis equivalentes a expressão em in para que seja realizado o cálculo entre elas.
Onde esteja ... realizar função da expressão
Recurso inspirado na representação de conjuntos em matemática.
Sequência de elementos entre parênteses, separados por vírgula. Para tuplas com apenas 2 elementos, podemos obter o primeiro ou o segundo com as funções fst e snd. Com mais de 2 elementos, utiliza-se lambda. Por exemplo:
ghci> (\(n,lat,long) -> long) ("Reitoria",-29.72083,-53.71479)
-53.71479
[1] Material disponibilizado em aula [2] https://www.inf.ufpr.br/andrey/ci062/ProgramacaoHaskell.pdf [3] Robert Sebesta. Conceitos de Linguagens de Programação. Bookman, 2018.