TrabalhosGratuitos.com - Trabalhos, Monografias, Artigos, Exames, Resumos de livros, Dissertações
Pesquisar

Linguagens De Programação Funcionais

Trabalho Universitário: Linguagens De Programação Funcionais. Pesquise 860.000+ trabalhos acadêmicos

Por:   •  23/11/2013  •  1.265 Palavras (6 Páginas)  •  414 Visualizações

Página 1 de 6

Linguagens de Programação Funcionais

Felipe Lima Morais

Disciplina: Paradigmas de Programação

Curso: Ciência da Computação

UEMS – Universidade Estadual de Mato Grosso do Sul

Resumo

Em ciência da computação, programação funcional é um paradigma de programação que trata a computação como uma avaliação de funções matemáticas e que evita estados ou dados mutáveis. Ela enfatiza a aplicação de funções, em contraste da programação imperativa, que enfatiza mudanças no estado do programa.

Palavra-Chave: ciência da computação, linguagens e aplicações de linguagens.

Introdução

Eficiência é o objetivo principal, mesmo que isso seja visto, por alguns, como uma restrição desnecessária ao projeto de desenvolvimento de software. O projeto de linguagens funcionais é baseado em funções matemáticas com uma sólida base teórica

Programação com alto nível de abstração Soluções elegantes, concisas e poderosas as Funções computam um resultado que depende apenas dos valores das entradas. Forte fundamentação teórica, o que permite mais facilmente provas de propriedades sobre os programas

Funções Matemáticas

Uma função matemática faz um mapeamento entre membros de um conjunto, chamado domínio, para um outro conjunto, chamado imagem. Uma expressão Lambda especifica os parâmetros e o mapeamento de uma função da seguinte forma.

λ (x) x * x * x para a função cube (x) = x * x * x .

Formas funcionais é uma função de alta ordem, ou forma funcional, é aquela que toma funções como parâmetro, produz uma função como resultado, ou ambos Composição de funções Toma duas funções como parâmetro e define uma função cujo o valor é a primeira função aplicada ao resultado da segunda

h ≡ f ◦ g, h(x) ≡ f (g(x))

Aplicar a tudo (Apply to all)

Toma uma função como parâmetro e resulta em uma lista de valores aplicando a função dada a cada elemento da lista de parâmetros

Forma: α h(x) ≡ x ∗ x

α(h,(2,3,4)) resulta (4,9,16)

Fundamentos das Linguagens Funcionais

O objetivo do projeto de uma LPF é imitar ao máximo as funções matemáticas o processo básico de computação em uma LPF é fundamentalmente diferente do processo em uma linguagem imperativa em uma linguagem imperativa, as operações são realizadas e os resultados são armazenados em variáveis para uso posterior Nas LFP, variáveis não são necessárias, assim como na matemática Nas LFP, a avaliação de uma função sempre produz o mesmo resultado se os mesmos parâmetros forem dados (transparência referencial) Repetição é espenicada com recursão Programas consistem em definições de funções e especiação de aplicações de funções A execução consistem na avaliação das aplicações das funções.

Uma LPF deve prover de um conjunto de funções primitivas, um conjunto de formas funcionais e um operador de aplicação de função. E algumas estruturas para representar dados

Em geral as LPF são implementadas com interpretadores, mas elas também podem ser compiladas. As linguagens imperativas em geral oferecem suporte limitado a programação funcional Não oferecem muitas formas funcionais (ex: retorno de função) Permitem efeitos colaterais.

Linguagem LISP

LISP (Lista Processing) foi criada por John McCarthy em 1958, e a segunda linguagem de programação de alto nível mais antiga ainda em uso.

Existem muitos dialetos: Common LISP, Scheme, Clojure

Tipo de dados: Átomos: símbolos (identificadores) ou literais numéricos, Listas e Listas são espenicadas delimitando os seus elementos com parênteses.

(A B C D)

(A (B C) D (E (F G)))

Em geral, as listas são armazenadas internamente como listas ligada simples

A notação lambda é usada para espenicar funções e definição de funções

(function name (lambda (arg1 ... argn) expression))

A aplicação de funções e os dados tem a mesma forma Se a lista (A B C) é interpretada como dado ela é uma lista simples de três átomos Se a lista é interpretada como aplicação de função, ela sínica que a função nomeada A é aplicada aos parâmetros A e B. LISP foi a primeira linguagem homo icônica O primeiro interpretador LISP apareceu como uma demonstração da capacidade universal de computação da Notação Stephen Russell e Daniel Edwards Implementação da função eval A notação usada pelo LISP é chamada de expressões s (symbolic expressions)

Linguagem SCHEME

Criada em meados de 1970 por Gerald Sussman e Guy Steele, projetada uma versão para ser limpa, moderna e simples de Lisp. Usa apenas escopo estático e Função são entidades de primeira classe Funções numéricas

Aritmética: +, -, *, /, abs, quotient, remainder,modulo, gcd, lcm, expt, sqrt

Aproximação: floor, ceiling, truncate, round

Desigualdades: <, <=, >, >=

Outros: zero?, negative?, positive? odd? even?

Máximo e mínimo: max, min.

Trigonometria: sin, cos, tan, asin, acos, atan

Exponencial: exp, log Funções predicados para listas

eq?: recebe dois parâmetros e faz uma comparação rasa, isto é, verifica-se os dois parâmetros referem-se ao mesmo objeto.

eqv?: semelhante ao eq?, mas para números e caracteres a comparação é pelo conteúdo, não pela referencia

equal?: para os tipos definidos pelo Racket (lista, string, etc), faz comparação profunda, ou seja, verifica recursivamente se o conteúdo é o mesmo

list?: retorna #t se o parâmetro é uma lista

null?:

...

Baixar como (para membros premium)  txt (9.1 Kb)  
Continuar por mais 5 páginas »
Disponível apenas no TrabalhosGratuitos.com